はまやんはまやんはまやん

hamayanhamayan's blog

改元 [ACM-ICPC JAG 模擬国内予選 2018年 A]

https://onlinejudge.u-aizu.ac.jp/challenges/sources/JAG/Prelim/2881

解法

https://onlinejudge.u-aizu.ac.jp/solutions/problem/2881/review/2994204/hamayanhamayan/C++14

場合分けをする。
yが31より大きい場合は改元している。
yが31のときはmが4より大きい場合に改元している。
他は全て改元していない。

string g;
int y, m, d;
//---------------------------------------------------------------------------------------------------
void _main() {
    while (cin >> g) {
        if (g == "#") return;
        cin >> y >> m >> d;

        if (31 < y) {
            g = "?";
            y -= 30;
        }
        else if (y == 31) {
            if (4 < m) {
                g = "?";
                y -= 30;
            }
        }

        printf("%s %d %d %d\n", g.c_str(), y, m, d);
    }
}