原题链接:CCF-CSP 201503-3 节日
#include <bits/stdc++.h>
using namespace std;
vector<int> mon={0,31,28,31,30,31,30,31,31,30,31,30,31};
bool isrun(int y)
{
if((y%4==0 && y%100!=0) || y%400==0) return true;
return false;
}
int dayofweek(int y,int m,int d)
{
int sum=0;
int p=1850;
while(p<y)
{
if(isrun(p)) sum+=366;
else sum+=365;
p++;
}
for(int i=1;i<m;i++)
{
sum+=mon[i];
if(isrun(y) && i==2) sum++;
}
sum+=d;
return (sum+1)%7;
}
int main()
{
std::ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int a,b,c,y1,y2;
cin>>a>>b>>c>>y1>>y2;
if(c==7) c=0;
while(y1<=y2)
{
int m=mon[a];
if(isrun(y1) && a==2) m++;
int num=0,f=0;
for(int i=1;i<=m;i++)
{
if(dayofweek(y1,a,i)==c) num++;
if(num==b)
{
f=1;
cout<<y1<<"/";
cout<<setw(2)<<setfill('0')<<a<<"/";
cout<<setw(2)<<setfill('0')<<i<<endl;
break;
}
}
if(f==0) cout<<"none"<<endl;
y1++;
}
return 0;
}