AtCoder ABC 048 B – Between a and b … Python解説
Between a and b …
問題文
非負の整数 a, b (a ≤ b) と、正の整数 xが与えられます。 a以上 b以下の整数のうち、xで割り切れるものの個数を求めてください。
AtCoder株式会社 AtCoder Beginner Contest 048
この問題、0<=a<=b<=10^18とかなり入力値が大きくなるので、xで割り切れる数をループを使って調べることができません。
というわけで、aとbそれぞれをxで割って、差を取ることにします。
a, b, x = map(int, input().split())
if a == 0:
print((b // x) - (a // x) + 1)
elif a % x == 0:
print((b // x) - (a // x) + 1)
else:
print((b // x) - (a // x))
見てもらうと分かるように、いくつかの例外処理があります。まず、aが0だった場合、0もxで割り切れる数に入ってくるため、計算結果に+1しています。
もうひとつ、aがxで割り切れる数のときは差を取るときに-1になってしまうので、計算結果を+1しています。