目次
はじめに
この記事では、ABC345のB問題を解説していきます。
ABC(AtCoder Beginner Contest)とは、AtCoderが開催している、競技プログラミングコンテストです。
ABC345 B – Integer Division Returns
問題
整数 X を 10 で割り、小数点以下を切り上げた値を求める問題です。
制約
- \(-10^{18} \leqq X \leqq 10^{18}\)
思考の筋道
Pythonでは切り上げが行える math.ceil 関数があります。
しかし、math.ceil(x / 10) では、x / 10 で計算誤差が発生し、それにより正しい答えを得られない可能性があります。
そのため、x / 10 ではなく x // 10 を使う方法を考えましょう。
xが10で割り切れるかどうかで場合分けします。割り切れる場合は、商が答えになります。割り切れない場合は、商に1足したものが答えになります。これで、切り上げの処理を表現できています。
10で割り切れる場合の具体例
10で割り切れない場合の具体例
x = 35 のとき
35÷10=3余り5
余りが発生しているので、3+1=4
なお、別解として、(x + 9)を10で割った商を答えとする方法もあります。この解法だと、場合分けが不要になります。
コード
X = int(input())
if X % 10 == 0:
print(X // 10)
else:
print(X // 10 + 1)
以上、ABC345のB問題の解説でした!
では、またね。
x = 30 のとき
30÷10=3
割り切れるので、そのまま3