本題不用考慮是否閏年即二月28還是29天,這對本題無影響(因為如果是29日,對稱日的年份應該是92**年,超出了題目的3000年),那么可以分成三類,1個月31天的,1個月30天的,和1個月28天的,然后對年份進行依次回圈,在依次判斷這一年的1到12月天數,最后判斷月數和天數的對稱組合數是否和年份相同,輸出即可,
#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;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/374614.html
標籤:其他
