一瞬、各月の日数を考えないといけない気がして面倒だ......となった。でもその必要はなかった。
問題概要
2018 年 1 月 1 日から、2018 年 月 日までに、「月と日が等しい日」が何日あるかを数えてください。
解法
この手の問題では手を動かして考えよう。たとえば、
- 2018 年 4 月 2 日のときは、1 月 1 日、2 月 2 日、3 月 3 日の 3 日
- 2018 年 4 月 20 日のときは、1 月 1 日、2 月 2 日、3 月 3 日、4 月 4 日の 4 日
これらから見えてくることは、
- 日の値が、月の値よりも小さいとき:月の値 - 1 が答え
- 日の値が、月の値以上のとき:月の値が答え
ではないかということ。実際これが答えとなる。
#include <bits/stdc++.h> using namespace std; int main() { int a, b; cin >> a >> b; if (b >= a) cout << a << endl; else cout << a - 1 << endl; }