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ってやけに書くな」と思ったので、何となくそう思いました^^
では、最後まで読んで頂きありがとうございます!^^
この記事が気に入ったらサポートをしてみませんか?