閏年の問題!
問題概要
1583 以上 2024 以下の整数 が与えられる。なお、西暦 年の日数は、
- が 4 の倍数でないとき:365 日
- が 4 の倍数で、かつ 100 の倍数でないとき:366 日
- が 100 の倍数で、かつ 400 の倍数でないとき:365 日
- が 400 の倍数のとき:366 日
である。
考えたこと
問題文に書いてある通りのことをそのまま実装してもよいし、次のように考えても良い(この方が簡単になる)。
- が 400 の倍数のとき:366 日
- そうではなく、 が 100 の倍数のとき:365 日
- そうではなく、 が 4 の倍数のとき:366 日
- そうでないとき:365 日
このように考えれば、if - else
文で綺麗に書ける。
コード
#include <bits/stdc++.h> using namespace std; int main() { int Y; cin >> Y; if (Y % 400 == 0) cout << 366 << endl; else if (Y % 100 == 0) cout << 365 << endl; else if (Y % 4 == 0) cout << 366 << endl; else cout << 365 << endl; }