0分求助,玄关

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

CCF___NOI @ 2024-10-21 21:59:15

#include<bits/stdc++.h>
using namespace std;
long long n,m,s,a[1000001];
bool huiwen(long long n){
    long long t,ans;
    t=n;
    while(t){
        ans=ans*10+t%10;
        t/=10;
    }
    if(ans==n)  return 1;
    else  return 0;
}
bool zhishu(int a){
    for(int i=2;i*i<=a;i++)
    {
        if(a%i==0)
            return 0;
    }
    return 1;
}
int main(){
    cin>>n>>m;
    for(int i=n;i<=m;i++){
        if(huiwen(i))
            a[++s]=i;
    }
    for(int i=1;i<=s;i++){
        if(zhishu(a[i]))  cout<<a[i]<<'\n';
    }
    return 0;
}

by csZJY @ 2024-10-21 22:06:07

复杂度O(m-n)会TLE,题目里给了如何生成回文数,可以优化一下


by CCF___NOI @ 2024-10-22 23:24:06

@csZJY 是WA 不是T


by __LIAM_olivers__ @ 2024-10-25 15:29:08

#include<bits/stdc++.h>
using namespace std;
int zs(int n){
    int f=0;
    for(int j=2;j*j<=n;j++){
        if(n%j==0){
            f=1;
            break;
        }
    }
    if(f==1){
        return 0;
    }
    else {
        return 1;
    }
}
int hw(int n){
    int a[10];
    int i=-1;
    while(n){
        a[++i]=n%10;
        n/=10;
    }
    for(int j=0;i>=j;i--,j++){
        if(a[i]!=a[j])return 0;
    }
    return 1;
}
int main(){
    int a,b;
    cin>>a>>b;
    if(a%2==0)a++;
    for(int i=a;i<=b;i+=2){
        if(zs(i) && hw(i)){
            cout<<i<<endl;
        }
    }
    return 0;
}

66分代码,其实我也不会


|