2021/01/21 寒假每日一题补卡
本题的要求是要求解出每个月13号出现周一到周日的次数
根据y总的提示,用一个二维数组 N*12 .记录下每个月的第一天距离1900年1月1日的天数
然后遍历这个二位数组,对7取余数即可。
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 410;
int res[7];//依次星期六,星期日,12345
int ddays[N][12];
//用一个二维数组,枚举每个月的第一天距离1900年1月1号过了多少天
int main(){
int n;
cin >> n;
int initial = 0;
for(int i = 0; i<n;i++)
for(int j = 0; j<12;j++)
{
if(j == 0||j==2||j==4||j==6||j==7||j==9||j==11){
ddays[i][j] = initial;
initial = initial +31;
continue;
}
if(j == 3||j==5||j==8||j==10){
ddays[i][j] = initial;
initial = initial +30;
continue;
}
if(j ==1){
if(((1900+i)%4==0&&(1900+i)%100!=0)||((1900+i)%100==0&&(1900+i)%400==0)){
ddays[i][j] = initial;
initial = initial +29;
continue;
}
else{
ddays[i][j] = initial;
initial = initial +28;
}
}
}
//现在ddays中存储的是每个月的第一天距离1900年1月1号过了多少天
for(int i = 0; i<n;i++)
for(int j = 0; j<12;j++){
int index = ddays[i][j];
res[index%7]++;
}
for(int i = 0; i<7;i++)
cout <<res[i]<< " ";
return 0;
}