けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

AtCoder ABC 331 A - Tomorrow (灰色, 100 点)

2 回繰り上がる場合 (年末の日) に注意!

問題概要

ある暦では、1 年は  M 月あり、1 月は  D 日だけある (固定値)。

 y m d 日の翌日を答えよ。

解法

年末のパターン、つまり  m = M かつ  d = D というパターンを見逃さないようにしよう!

  • 年末のときは:答えは  y + 1 1 1 日になる
  • それ以外の月末のときは:答えは  y m + 1 1 日になる
  • それ以外のときは:答えは  y m d + 1 日になる。
#include <bits/stdc++.h>
using namespace std;

int main() {
    int M, D, y, m, d;
    cin >> M >> D >> y >> m >> d;
    
    if (m == M && d == D)
        cout << y+1 << " " << 1 << " " << 1 << endl;
    else if (d == D)
        cout << y << " " << m+1 << " " << 1 << endl;
    else
        cout << y << " " << m << " " << d+1 << endl;
}