参考了徐同学的思路,错了无数遍,终于改成了和徐同学相似度极高的代码,感谢徐同学。
#include <iostream>
#include<cstdio>
#include<cstdlib>
int judge1(int n);
void all(int y,int m,int d);
int judge2(void);
int letter[100000000];
int len;
using namespace std;
int main()
{
int i,j,k,t,ans=0,p;
for(i=1;i<=2020;i++)
for(j=1;j<=12;j++)
{
t=judge1(j);
for(k=1;k<=t;k++)
{
all(i,j,k);
if(judge2())
{
ans++;
for(p=1;p<=len;p++) printf("%d",letter[p]);
printf("\n");
}
}
}
printf("%d",ans);
}
int judge1(int n)
{
if(n==2) return 28;
else if(n==1||n==3||n==5||n==7||n==8||n==10||n==12) return 31;
else return 30;
}
void all(int n,int m,int l)
{
len=0;
if(l>=10)
while(l>0) {letter[++len]=l%10;l/=10;}
else {letter[++len]=l;letter[++len]=0;}
if(m>=10)
while(m>0) {letter[++len]=m%10;m/=10;}
else {letter[++len]=m;letter[++len]=0;}
while(n>0) {letter[++len]=n%10,n/=10;}
int t=len/2,x,i;
for(i=1;i<=t;++i)
{
x=letter[i];
letter[i]=letter[len-i+1];
letter[len-i+1]=x;
}
}
int judge2(void)
{
int i;
for(i=1;i<=len/2;i++)
if(letter[i]!=letter[len+1-i])
return 0;
return 1;
}
结果