求助大神

P1314 [NOIP2011 提高组] 聪明的质监员

LateNightPoet @ 2017-01-23 20:46:32

13,#15,#16,#18,#20 WA

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define _3 reverse=p1*100+p2*10+p1
#define _5 reverse=p1*10000+p2*1000+p3*100+p2*10+p1
#define _7 reverse=p1*1000000+p2*100000+p3*10000+p4*1000+p3*100+p2*10+p1

int pr[1000001]={2,3,5,7,11};

int isPrime(int a)
{
    int i,Sqrt=sqrt(a);
    for(i=2;i<=Sqrt;++i)
        if(a%i==0)
            return 0;
    return 1;
}
int main()
{
    int reverse;
    int index=5;
    int i;
    int p1,p2,p3,p4;
    int s,e;
    for(p1=1;p1<10;p1+=2)
        for(p2=0;p2<10;++p2)
            if(isPrime(_3))
                pr[index++]=reverse;
    for(p1=1;p1<10;p1+=2)
        for(p2=0;p2<10;++p2)
            for(p3=0;p3<10;++p3)
                if(isPrime(_5))
                    pr[index++]=reverse;
    for(p1=1;p1<10;p1+=2)
        for(p2=0;p2<10;++p2)
            for(p3=0;p3<10;++p3)
                for(p4=0;p4<10;++p4)
                    if(isPrime(_7))
                        pr[index++]=reverse;
    pr[index]=1<<30;
    scanf("%d%d",&s,&e);
    int start=0;
    while(pr[start]<s) ++start;
    for(i=start;pr[i]<=e;++i)
        printf("%d\n",pr[i]);
    return 0;
}

|