世界对称日指的是类似20211202,即年月日倒过来依旧为原数
代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
long int A[1000]={0},B[1000]={0},C,D,E,sum=0,real=0,A1;
for(int q=1000;q<=3000;q++)
{
for(int w=1;w<=12;w++)
{
if(w==1||w==3||w==5||w==7||w==8||w==10||w==12)
{
for(int e=1;e<=31;e++)
{
A1=q*10000;
if(w<10)
A1=A1+w*100;
if(w>=10)
A1=A1+w*100;
A1=A1+e;
C=A1;
for(int o=1;;o++)
{
A[o]=C%10;
C=C/10;
D=o;
if(C==0)
break;
}
E=D;
for(int o=1;o<=D;o++)
{
for(int t=(E-o);t>0;t--)
{
A[o]=A[o]*10;
}
real=real+A[o];
}
if(real==A1)
{
sum=sum+1;
printf("%d\n",A1);
}
real=0;
}
}
else
{ int z=30;
if(q%4!=0&&w==2)
z=28;
for(int e=1;e<=z;e++)
{
A1=q*10000;
if(w<10)
A1=A1+w*100;
if(w>=10)
A1=A1+w*100;
A1=A1+e;
C=A1;
for(int o=1;;o++)
{
A[o]=C%10;
C=C/10;
D=o;
if(C==0)
break;
}
E=D;
for(int o=1;o<=D;o++)
{
for(int t=(E-o);t>0;t--)
{
A[o]=A[o]*10;
}
real=real+A[o];
}
if(real==A1)
{
sum=sum+1;
printf("%d\n",A1);
}
real=0;
}
}
}
}
printf("一共有%d次世界完全对称日",sum);
return 0;
}
解题思路:主要运用回文的思路,结合循环和选择的思想,解出此题。