トヨタ自動車プログラミングコンテスト2023#2(AtCoder Beginner Contest 302)の解説記事です。
目次
ABC302 A – Attack
問題
問題文の要約は以下の通りです。
問題の要約
\(A\) から \(B\) を最低何回引いたら 0 以下になるか?
制約
・\(1 \le A , B \le 10^{18}\)
・\(A , B\) は整数
入力
\(A\) \(B\)
出力
答えを出力せよ。
解説1
\(A\) が \(B\) で割り切れるときと割り切れないときで場合分けをする。
解説
まず入力を \(A\) , \(B\) で受け取ります。
A,B=map(int, input().split())
\(A\) が \(B\) で割り切れるときはA//B
が答えになります。
if A%B==0:
print(A//B)
\(A\) が \(B\) で割り切れないときはA//B+1
が答えになります。
else:
print(A//B+1)
解答
A,B=map(int, input().split())
if A%B==0:
print(A//B)
else:
print(A//B+1)
if
文をprint
内にまとめると次のようになります。
A,B=map(int, input().split())
print(A//B if A%B==0 else A//B+1)
解説2
\(A\) を \(B\) で割ったときの切り上げを考える。
解説
\(A\) を \(B\) で割ったときの切り上げは(A+B-1)//B
と等しくなります。
解答
A,B=map(int, input().split())
print((A+B-1)//B)