見出し画像

AtCoder:Coins by Python

今回は前回に引き続きAtcoder の問題について書いていきます。
今回の問題は可能な通りの総数を求める問題でした。
詳しいの問題はこちら↓

今回のコードはこちら↓

n = int (input())
b = int (input())
v = int (input())
c = int (input())
count = 0
for i in range(n+1):
   for u in range(b+1):
       for y in range(v+1):
           if (i*500 + u*100 + y*50 > c):
               break
           
           elif (i*500 + u*100 + y*50 == c):
               count+=1
print(count)

今回は前回までとは違い入力に頭を悩ませることは無かったので、割かし書き始めは順調でしたが...!その後、どうしようか手が止まってしまいました😞

では、一から見て行こうと思います!

まず、入力はそのままなので大丈夫だと思います。今回は四則演算をしないといけないことが分かっていたので"int"で入力しました!
"count = 0"はいつもの事ですね^^

その後、"for"が連続しますがこれは、3種類のコインの枚数を一つづつ入れていくので、3連続で続きます!そこで、"i,u,y"を使って"if"に繋げます。
因みに"range "で+1をしているのは例えば

range(5)

とすると、0,1,2,3,4までしか処理されません、なので5まで処理して欲しい場合は

range(6)

と +1 して入れます。なので、今回すべてにそれぞれ+1をしています!

実際 +1 しないで書いた場合、入力例にあった

2
2
2
100

この問題で答えは2なのですが、1と一つ足りなく処理が終わります。なので、すべての通りにする場合は+1にしなければならなんです!正直ここの所をすっかり忘れていて時間が掛かってしまいました^^

その後、"if"と"elif"でそれぞれ合計値を計算し、それが"c"を超えたら、組み合わせが無いので"break"で終了し、同じになった時に"count"に+していきました。
最後は"count"を出力して終わりです!!

"for"を3つ繋げる発想が無かったのでもっと勉強が必要ですね^^

最後まで読んで頂きありがとうございます!!^^

コラム

前回までは入力に悩まされていたんですけど、今回はループ処理に悩まされてしまいました😞
でも、今までよりは格段に書けるようになった気がします!
エラーも少なくなりましたし、後は、処理を進めて行くかを考えられるようになりたいですね!!
実は、今までやって来た問題で共通点があったのに気づきましたか?

それは、必ず何かの個数を聞いてきていたんですね!(2回ほど例外もありましたけど)割る事の出来る回数や、特定の文字の個数や、今回の通り数とか。A、Bはこういう問題が多いんですかね?他のコンテストの問題はほとんど見たことないので、全体的な事は分からないんですけどね^^
でも、最近「なんかcountってやけに書くな」と思ったので、何となくそう思いました^^

では、最後まで読んで頂きありがとうございます!^^


この記事が気に入ったらサポートをしてみませんか?