[R69A] 包装
- 难度 入门
- 时限 1s
- 空限 512m
- 数学
数据规模:。
思路
一次「装 瓶」的操作等价于 次「装 1 瓶」,但只花 1 次操作,所以第一种方式用得越多越好。最多能用 次第一种方式,剩下的 瓶用第二种方式逐瓶装,总操作数为
时 ,退化为全部单瓶包装,公式同样成立。
复杂度:时间 ,空间 。
仓颉实现
import std.env.*
import std.convert.*
main(): Int64 {
let reader = getStdIn()
let nx = reader.readln().getOrThrow().split(" ", removeEmpty: true).map({ p => Int64.parse(p) })
let n = nx[0]
let x = nx[1]
println(n / x + n % x)
return 0
}
要点:
- 贪心正确性:设第一种方式用了 次,总操作数为 ,随 单调递减,故 取最大值 。