문제
링크
풀이
#include <iostream>
using namespace std;
inline bool leap(int y) {
return (y % 4 == 0 && y % 100 != 0) || (y % 400 == 0);
}
inline int calc(int m, int y) {
if (m == 2) return leap(y) ? 29 : 28;
if (m == 4 || m == 6 || m == 9 || m == 11) return 30;
return 31;
}
void solve(void) {
int x, n; cin >> x >> n;
int d, m, g; cin >> d >> m >> g;
int cur = (2 * x - 1) * n - 1;
while (cur > 0) {
if (d + cur <= calc(m, g)) {
d += cur;
break;
}
cur -= calc(m, g) - d + 1;
d = 1;
if (++m > 12) m = 1, g++;
}
cout << d << " " << m << " " << g;
}
int main(void) {
ios::sync_with_stdio(false);
cin.tie(nullptr);
solve();
return 0;
}