[R60A] 喝牛奶

  • 难度 入门
  • 时限 1s
  • 空限 512m
  • 数学

数据规模:1xy9991 \le x \le y \le 999

思路

每年长高 0.4=250.4 = \frac{2}{5} 厘米,坚持 tt 年后身高为 x+25tx + \frac{2}{5}t,要求它不小于 yy

x+25ty    2t5(yx)x + \frac{2}{5}t \ge y \iff 2t \ge 5(y-x)

所以

t=5(yx)2=5(yx)+12t = \left\lceil \frac{5(y-x)}{2} \right\rceil = \left\lfloor \frac{5(y-x)+1}{2} \right\rfloor

复杂度:时间 O(1)O(1),空间 O(1)O(1)

仓颉实现

import std.env.*
import std.convert.*

main(): Int64 {
    let reader = getStdIn()
    let xy = reader.readln().getOrThrow().split(" ", removeEmpty: true).map({ p => Int64.parse(p) })
    let d = xy[1] - xy[0]
    println((5 * d + 1) / 2)
    return 0
}

要点:

  • 向上取整 p/2\lceil p/2 \rceil 用整数运算写成 (p + 1) / 2,避免浮点误差。
  • x=yx = y 时答案为 00(已经达标),公式自然给出。