AC代码:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <queue>
#include <stack>
#include <map>
#include <cstring>
#include <climits>
#include <cmath>
#include <cctype>
const int inf = 0x3f3f3f3f;//1061109567
typedef long long LL;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
using namespace std;
int month[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
bool judge(int year)
{
if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
return true;
return false;
}
int main()
{
int a,b,c,y1,y2;
scanf("%d%d%d%d%d",&a,&b,&c,&y1,&y2);
for(int i=y1; i<=y2; i++)
{
int sum = 0;
for(int j=1850; j<=i-1; j++)
{
if(judge(j))
sum += 366;
else
sum += 365;
}
if(judge(i))
month[2]++;
for(int j=1; j<a; j++)
{
sum += month[j];
}
int sum2 = 0;
int j;
for(j=1; j<=month[a]; j++)
{
int x = (sum + j - 1) % 7;//这里是隔的天数必须减1
//能整除是星期二,整除余1是星期三,依次类推
if(x == 6)
x = 1;
else
x += 2;
if(x == c)
{
sum2++;
}
if(sum2 == b)
break;
}
if(j > month[a])
printf("none\n");
else
printf("%02d/%02d/%02d\n",i,a,j);
month[2] = 28;//有可能第二个月份可能变了,重置一下
}
return 0;
}