喵呜难过

P1217 [USACO1.5] 回文质数 Prime Palindromes

lucy2012 @ 2024-08-14 14:54:13

33分,感觉是判断质数那里错了喵。。

#include<bits/stdc++.h>
using namespace std;
long long a,b,cnt=4,prime[10000010];
bool pri(int x){
    int tmp=1;
    for(int i=2;i*i<=x;i++){
        if(x%i==0){
            tmp=0;
            break;
        }
    }
    return tmp;
}
int main(){
    prime[1]=2;
    prime[2]=3;
    prime[3]=5;
    prime[4]=7;
    for(int i=1;i<=9;i+=2){
        if(pri(i+10*i)){
            prime[++cnt]=i+10*i;
        }
    }
    for(int i=1;i<=9;i+=2){
        for(int j=0;j<=9;j++){
            if(pri(i+10*j+100*i))
                prime[++cnt]=i+10*j+100*i;
        }
    }
    for(int i=1;i<=9;i+=2){
        for(int j=0;j<=9;j++){
            if(pri(i+10*j+100*j+1000*i)) 
                prime[++cnt]=i+10*j+100*j+1000*i;
        }
    }
    for(int i=1;i<=9;i+=2){
        for(int j=0;j<=9;j++){
            for(int k=0;k<=9;k++){
                if(pri(i+10*j+100*k+1000*j+10000*i))
                    prime[++cnt]=i+10*j+100*k+1000*j+10000*i;
            }
        }
    }
    for(int i=1;i<=9;i+=2){
        for(int j=0;j<=9;j++){
            for(int k=0;k<=9;k++){
                if(i+10*j+100*k+1000*k+10000*j+100000*i)
                    prime[++cnt]=i+10*j+100*k+1000*k+10000*j+100000*i;
            }
        }
    }
    for(int i=1;i<=9;i+=2){
        for(int j=0;j<=9;j++){
            for(int k=0;k<=9;k++){
                for(int q=0;q<=9;q++){
                    if(i+10*j+100*k+1000*q+10000*k+100000*j+1000000*i)
                        prime[++cnt]=i+10*j+100*k+1000*q+10000*k+100000*j+1000000*i;
                }
            }
        }
    }
    for(int i=1;i<=9;i+=2){
        for(int j=0;j<=9;j++){
            for(int k=0;k<=9;k++){
                for(int q=0;q<=0;q++){
                    if(i+j*10+k*100+q*1000+q*10000+k*100000+j*1000000+i*10000000)
                        prime[++cnt]=i+j*10+k*100+q*1000+q*10000+k*100000+j*1000000+i*10000000;
                }
            }
        }
    }
    for(int i=1;i<=9;i+=2){
        for(int j=0;j<=9;j++){
            for(int k=0;k<=9;k++){
                for(int q=0;q<=9;q++){
                    for(int w=0;w<=9;w++){
                        if(i+j*10+k*100+q*1000+w*10000+q*100000+k*1000000+j*10000000+i*100000000)
                            prime[++cnt]=i+j*10+k*100+q*1000+w*10000+q*100000+k*1000000+j*10000000+i*100000000;
                    }
                }
            }
        }
    }
    cin>>a>>b;
    for(int i=1;i<=cnt;i++){
        if(prime[i]>=a&&prime[i]<=b){
            cout<<prime[i]<<endl;
        }
        if(prime[i]>b)
            break;
    }
    return 0;
}

by hsy0824 @ 2024-08-15 22:21:45

@Hanrui1206 打表之神


上一页 |