https://yukicoder.me/problems/no/721
解法
https://yukicoder.me/submissions/276737
与えられた日付を解釈するにはC++ならssprintfを使おう。
うるう年判定は面倒臭がって解説をそのまま取ってきてしまった。
あとは、Dを2つ増やして、Dが月の最大日数を超えたら、Mを増やして、Mが12を超えたらYを増やしていく。
出力は10の位を0埋めするために%02dとしている。
int days[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; string S; int Y, M, D; //--------------------------------------------------------------------------------------------------- void _main() { cin >> S; sscanf(S.c_str(), "%d/%d/%d", &Y, &M, &D); if (Y % 4 == 0 && !(Y % 100 == 0 && Y % 400 != 0)) days[2] = 29; D += 2; if (days[M] < D) { D -= days[M]; M++; if (12 < M) { Y++; M = 1; } } printf("%04d/%02d/%02d\n", Y, M, D); }