这是Project Euler的第十九题
#include <iostream>
#include <vector>
using namespace std;
int check(int i){
if(i%100==0)
{
if(i%400==0) return 366;
return 365;
}
else
{
if(i%4==0){
return 366;
}
return 365;
}
}
int main(){
int res=0,j=0;
vector<int> month1={31,28,31,30,31,30,31,31,30,31,30,31};
vector<int> month2={31,29,31,30,31,30,31,31,30,31,30,31};
vector<int> month;
for(int i=1901;i<=2000;i++){
int year = check(i-1);
if(check(i)==366) month = month2;
else
{
month = month1;
}
j += year;
int m = 1;//1900.1.1为周一
if((j+m)%7==0) res++;
for(int k=1;k<=11;k++){
m += month[k-1];
if((j+m)%7==0){
res++;
cout<<i<<" "<<k+1<<endl;
}
}
}
cout<<res<<endl;
return 0;
}