30分,求大神指点

P2010 [NOIP2016 普及组] 回文日期

liujun3905 @ 2017-08-06 22:29:09

#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{
    int i,j,s,z,k[9],t,p,n,y,r,b=0;
    scanf("%d",&s);
    scanf("%d",&z);
    n=s/10000;
    y=s/100%100;
    r=s%100;
    for(i=s+1;i<z;i++)
    {
        t=0;
        r++;printf("%d ",i);
        if(r>a[y])r=1,y++;
        if(y>12)y=1,n++;
        if(n>z/10000)break;
        p=n*10000+y*100+r;
        k[1]=n/1000;
        k[2]=n/100%10;
        k[3]=n/10%10;
        k[4]=n%10;
        k[5]=y/10;
        k[6]=y%10;
        k[7]=r/10;
        k[8]=r%10;
        for(j=1;j<=4;j++)
        {
            if(k[j]==k[8-j+1])t++;
            else break;
        }
        if(t==4)b++;
    }
    printf("%d",b);
    return 0;
}

by liujun3905 @ 2017-08-06 22:33:45

好奇怪,每次刷新才出来


by Erusel @ 2017-08-16 09:19:32

很有可能时间超限,运算量太大


by Erusel @ 2017-08-16 09:20:29

你可以优化一下方法


by Erusel @ 2017-08-16 09:22:37

例如用一个函数判断闰年,一个函数判断是否是日期,另一个在两数间不断生成,进行判断


|