はじめに
今回から、python3で競プロの問題(AtCoder)を解く毎日という企画をしようと思います。問題の選択は、AtCoder ProblemsのRecommendationsからです。
目的
- レートを上げる。
- 初見問題への対応力をつける
#1
考えたこと
2WAしました。場合分けを考える問題が苦手なことが分かりました。
この問題は、n mod(10)の大きさで場合分けしました。問題を読むと、N個以上買うのにいくらかかるかを答えるので、Nを越えた数を買ってもよいことが分かります。個別に買った方が安いのか、まとめて買った方が安いのかをn mod(10)で比較すると次のようになります。
n mod(10), 個別, 個別とまとめて買ったときの差
1 , 15 , 85
2 , 30 , 70
3 , 45 , 55
4 , 60 , 40
5 , 75 , 25
6 , 90 , 10
7 , 105 , -5
8 , 120 , -20
9 , 135 , -35
10 , 150 , -50
となります。
このことからn mod(10)>6のときにまとめて買った方が安いことが分かります。
よって、
if n % 10 > 6:
b = 100 * (n // 10 + 1)
else:
p = n % 10
b = 100 * (n // 10) + p * 15
にすれば、うまく条件を満すことができます。
あとは上のコードに標準入力と出力をつけるだけです。出力には、min()を使います。
n = int(input())
a = 15 * n
if n % 10 > 6:
b = 100 * (n // 10 + 1)
else:
p = n % 10
b = 100 * (n // 10) + p * 15
print(min(a,b))
まとめ
A問題なのに2WAも出してしまったのが悔しい。タグに不穏なワードが入っていますが、そうならないようにがんばります。