样例没输出,这是为什么?

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

LHX_18460366315 @ 2024-02-05 15:45:07

这个代码我核对了 N 遍,结果仍然还是没有输出。。。。。。

#include<bits/stdc++.h>
using namespace std;
bool zhishu(long long x){
    if (x <= 1){
        return false;
    }
    for (long long i = 1;i <= sqrt(x);i++){
        if (x % i == 0){
            return false;
        }
    }
    return true;
}
bool check(int x){
    int a[20],flag = 1;
    while (x > 0){
        a[flag] = x % 10;
        x /= 10;
        flag++;
    } 
    for (int i = 1; i <= flag / 2;i++){
        if(a[i] != a[flag - i]){
            return false;
        }
    }
    return true;
}
bool weishu(int x){
    if((1000 <= x && x <= 9999) || (100000 <= x && x <= 999999)){
        return false;
    } 
    return true;
}
int main(){
    long long n,m;
    cin >> n >> m;
    for (long long i = n;i <= m;i += 2){
        if (zhishu(i) && check(i) && weishu(i)){
            cout << i << endl;
        }
    }
    return 0;
}

by HUDSI1265 @ 2024-02-20 17:36:58

1.你这边判断回文写的比较繁琐 帮你改了下

bool check(int x){
    int x1=0,t=x;
    while(t){
        x1=x1*10+t%10;
        t/=10;
    }
    if(x==x1)return 1;
    return 0;
}

2 你主函数部分写错了

for (long long i = n;i <= m;i += 2){
        if (zhishu(i) && check(i) && weishu(i)){
            cout << i << endl;
        }
    }

的+=2应该改成++ 3.提交上去只会66分 因为这题时间复杂度较高,要用线型筛


|