本記事は管理人が競技プログラミングを始めたため,その精進日記としてログを取ったものです。アウトプットして積極的にモチベーションを上げていく作戦です。記事目次は以下をご覧ください。
【競プロ精進日記】目次まとめ
ABC
Atcoder Beginner Contestの過去問を解いています。最低限のコメントと一言が添えられています。
...
スポンサーリンク
AtCoder Beginners Selection
AtCoder Beginners Selectionの問題を1から解いていくシリーズです。使用言語はc++とpythonです。今回はABC087B Coinsです。
c++
#include <bits/stdc++.h>
#define _GLIBCXX_DEBUG
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
using namespace std;
int main() {
int a, b, c, x = 0;
int ans = 0;
cin >> a >> b >> c >> x;
// 3重ループ開始
rep(i, a+1){
rep(j, b+1){
rep(k, c+1){
if (500*i + 100*j + 50*k == x) ans++;
}
}
}
cout << ans << endl;
}
3重ループができますかという問題です。「500i + 100j + 50*k」ではなく「500a + 100b + 50*c」としてしまいがちなので注意です。また,for文の範囲は+1したものになっていますが,これはインデックスが0始まりだからです。
python
a = int(input())
b = int(input())
c = int(input())
x = int(input())
ans = 0
for i in range(a+1):
for j in range(b+1):
for k in range(c+1):
if 500*i + 100*j + 50*k == x:
ans += 1
print(ans)
pythonでも方針は同様です。