AcWing 3218. 日期计算
原题链接
简单
作者:
南川嘉子
,
2024-10-07 17:07:30
,
所有人可见
,
阅读 2
#include<iostream>
using namespace std;
int mon[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int isrun(int y){
if(y%400==0||(y%4==0&&y%100))return 1;//闰年
return 0;//不是闰年
}
int getdays(int y,int m){
if(m==2) return mon[2]+isrun(y);
else return mon[m];
}
int main(){
int y,d;
cin>>y>>d;//得到年份和总天数
int m,date;//要输出的月份和日期
if(isrun(y)==0){//不是闰年
int res=0;
for(m=1;res<d;m++){//假设d=80
res+=mon[m];//m有1 2 res到90 m到4 再想进入但是不行了
}
cout<<m-1<<endl;
res-=mon[m-1];//res减为前两个月的 59
cout<<d-res<<endl;//输出80-59=21;
}
else{//2000年
mon[2]=29;
int res=0;
for(m=1;res<d;m++){//假设d=60 res<而不是<=!!!处理边界 如2000的第60天正好是2月29号
res+=mon[m];//m有1 2 res到60(就不能再允许向下加了) m到3 再想进入但是不行了
}
cout<<m-1<<endl;
res-=mon[m-1];//r 60-29=31
cout<<d-res<<endl;//输出60-31=29
}
return 0;
}