对于 100% 的数据,1≤n≤109。
思路
设 g=nmod10 为 n 的个位数字。
- 若 g≤4,直接将个位变为 0,即 n−g;
- 若 g≥5,向十位进一并将个位变为 0,即 n−g+10。
两种情况可统一为一个表达式。注意到给 n 加上 5 后再整除 10 取整,恰好实现「个位四舍五入到十位」的效果:
ans=⌊10n+5⌋×10
验证边界:
- n=14:(14+5)/10×10=1×10=10,正确;
- n=15:(15+5)/10×10=2×10=20,正确。
由于 n≤109,n+5 不会溢出 Int64,可直接用整数运算一步求得答案。
复杂度
- 时间复杂度:O(1)。
- 空间复杂度:O(1)。
仓颉实现
import std.convert.*
import std.env.*
main(): Int64 {
let reader = getStdIn()
let n = Int64.parse(reader.readln().getOrThrow())
println(((n + 5) / 10) * 10)
return 0
}