C++ 代码
#include <bits/stdc++.h>
using namespace std;
int months[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31};
// 每月有多少天
int hcy(int y)
{
if(y%4==0&&y%100||y%400==0)
return 1;
return 0;
}
// 求哪年的2月有多少天
int wahcy(int h,int c)
{
if(c==2) return months[c]+hcy(h);
return months[c];
}
int main()
{
int a,b,c,y1,y2;
cin>>a>>b>>c>>y1>>y2;
int day=0,h=0,f;
for(int i=1850; i<=y2; i++)
{
for(int j=1; j<=12; j++)
{
if(j==a&&i>=y1)
{
f=(1+day)%7,h=0;
// 枚举该年的所有天,k表示日期
for(int k=1; k<=wahcy(i,j); k++)
// 等于所求的星期几,这里下标从0开始,而不是1,所以c-1
{
if(f==c-1)
{
h++;// 当前第几个星期
if(h==b)// 恰好是所要求的第b个星期,则输出
{
printf("%04d/%02d/%02d\n",i,j,k);
break;
}
}
f=(f+1)%7;// f不断增加,计算星期几
}
if(h<b)
cout<<"none"<<endl;// 如果没有找到第b个星期,则输出none
}
day+=wahcy(i,j);
// cout << days << endl;
}
}
return 0;
}