1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

はじめに

今回から、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も出してしまったのが悔しい。タグに不穏なワードが入っていますが、そうならないようにがんばります。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?