题目传送门
解题思路:
纯模拟,水题凑题数.
AC代码:
1 #include<bits/stdc++.h> 2 using namespace std; 3 bool rn(int);//声明判断是否是闰年的函数 4 int main(){ 5 int n1; 6 cin>>n1;//同题目的n 7 int n=1900,y=1,r=1,xq=1;//初始化并声明年月日 8 int yue[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};//记录每个月有几天 9 int njs;//记录是否是闰年 10 int wew[8]={0,0,0,0,0,0,0,0};//初始化周一到周天有多少个在13号 11 while(1){//非0为true 12 if(n==1900+n1&&y==1&&r==1){//如果到了指定日期就推出循环 13 break; 14 } 15 if(rn(n)){//判断是否为闰年 16 njs=1; 17 } 18 else{ 19 njs=0; 20 } 21 r+=1;//日加一 22 xq+=1;//星期加一 23 if(r>yue[njs][y]){//如果日大于这个月的天数,月加一,日归一 24 r=1; 25 y+=1; 26 } 27 if(y>12){//如果月大于12,年加一,月归一 28 n+=1; 29 y=1; 30 } 31 if(xq>7){//如果星期大于7,星期归一 32 xq=1; 33 } 34 if(r==13){//如果日等于13,这个星期在13号的次数加一 35 wew[xq]+=1; 36 } 37 } 38 cout<<wew[6]<<" "<<wew[7]<<" "<<wew[1]<<" "<<wew[2]<<" "<<wew[3]<<" "<<wew[4]<<" "<<wew[5];//输出 39 return 0;//完美无瑕疵结束 40 } 41 bool rn(int h){ 42 if(h%100==0){//判断是否是世纪年 43 if(h%400==0){//如能被400整除,就是闰年 44 return true; 45 } 46 else{//否则不是 47 return false; 48 } 49 } 50 else{ 51 if(h%4==0){//能被四整除,就是闰年 52 return true; 53 } 54 else{//否则不是 55 return false; 56 } 57 } 58 }