十三号星期五:
枚举月份或者日期都行
//枚举月份
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int months[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int weekdays[7];
int main()
{
int n;
cin>>n;
int days=0;
for(int i=1900;i<1900+n;i++)
{
for(int j=1;j<=12;j++)
{
weekdays[(days+12)%7]++;
days+=months[j];
if(j==2)
if( i%100!=0 && i%4==0 || i%400==0 )
{
days++;
}
}
}
for(int i=5,j=1;j<=7;i=(i+1)%7,j++)
{
cout<<weekdays[i]<<' ';
}
return 0;
}
按照天数
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int months[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int weekdays[7];
int get(int year,int month)
{
if(month!=2)return months[month];
if(year%100!=0 && year%4==0 || year%400==0)
return 29;
else return 28;
}
int main()
{
int n;
cin>>n;
int week = 0,year = 1900,month = 1,day = 1;
while(year < 1900 + n)
{
if(day == 13) weekdays[week%7]++;
week=(week+1)%7;
day++;
if(get(year,month)<day) day=1,month++;
if(month>12) month=1,year++;
}
for(int i=5,j=1;j<=7;i=(i+1)%7,j++)
{
cout<<weekdays[i]<<' ';
}
return 0;
}