学生容易理解的版本(加注释)
2026-09-28 00:46:36
发布于:广东
7阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
int is_leap(int y){ //是闰年吗?
return y%400==0 || y%4==0 && y%100!=0;
}
int m_days(int m, int y){ //本月多少天,指定年份
if(m==2) return is_leap(y) ? 29 : 28;
else if(m<=7) return 30 + (m%2==1);
else return 30 + (m%2 == 0);
}
int ymd_to_days(int y, int m, int d){
int days = 0; //元年起的总天数
for(int i=1; i<y; i++)
days += is_leap(i) ? 366 : 365;
for(int i=1; i<m; i++)
days += m_days(i, y);
return days + d;
}
int main()
{
int y,m,d,q,op,x;
cin >> y >> m >> d >> q;
int days = ymd_to_days(y, m, d);
while(q--){
cin >> op >> x;
days += op==1 ? x : -x; //加还是减
}
y=1; m=1; d=days;
while(d > 365+is_leap(y) ){ //还原年份
d -= 365+is_leap(y);
y++;
}
while(d > m_days(m, y) ){ //还原月份
d -= m_days(m, y);
m++;
}
cout << y << ' ' << m << ' ' << d;
return 0;
}
这里空空如也






有帮助,赞一个