//将问题拆解了一下,先求每个月是星期几,再进行接下来的运算,可以一步到位的
1 #include<iostream> 2 using namespace std; 3 //**********节日计算************* 4 //计算y1年的a月第一天是星期几 5 int month[12]={31,28,31,30,31,30,31,31,30,31,30,31}; 6 int day(int y1,int a){ 7 int y3=0; 8 int c1=2; 9 for(int year=1850;year<y1;year++){ 10 int d=365;month[1]=28; 11 if((year%4==0&&year%100!=0)||year%400==0){ 12 d=366;month[1]=29; 13 } 14 y3+=d; 15 } 16 for(int i=0;i<a-1;i++){ 17 y3+=month[i]; 18 } 19 c1+=y3%7; 20 if(c1==8){ 21 c1=1; 22 } 23 return c1; 24 } 25 int main(){ 26 //节日计算 27 int a,b,c,y1,y2,c2; 28 cin>>a>>b>>c>>y1>>y2; 29 for(int y=y1;y<=y2;y++){ 30 month[1]=28; 31 if((y%4==0&&y%100!=0)||y%400==0){ 32 month[1]=29; 33 } 34 if(c>day(y,a)){ 35 c2=c-day(y,a)+7*(b-1)+1; 36 } 37 else{ 38 c2=c-day(y,a)+7*b+1; 39 } 40 if(c2>month[a-1]){ 41 cout<<"none"<<endl; 42 } 43 else{ 44 cout<<y; 45 if(a<10){ 46 cout<<"/0"<<a; 47 } 48 else{ 49 cout<<"/"<<a; 50 } 51 if(c2<10){ 52 cout<<"/0"<<c2<<endl; 53 } 54 else{ 55 cout<<"/"<<c2<<endl; 56 } 57 } 58 } 59 60 return 0; 61 62 }
时间: 2024-10-12 14:08:53