Lin_Ziluo @ 2024-04-10 18:25:01
出了什么问题吗?
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <fstream>
#include <cmath>
#include <string>
#include <cstring>
#include <algorithm>
using namespace std;
int a[15];
bool hwzs(int x){
int ans1 = 0,ans2 = 0,ans = 0;
for (int i = 2;i < x;i++) if (!(x % i)) return false; //刷掉合数。
if (!(x / 10)) return true; //特判x为一位数的情况。
while (x){
a[++ans] = x % 10;
x /= 10;
} //分离各位。
if (ans % 2){ //按位数的奇偶分开算。
for (int i = 1;i <= ans / 2 + 1;i++) ans1 += a[i] * pow(10,i - 1);
for (int i = ans / 2 + 1;i <= ans;i++) ans2 += a[i] * pow(10,i - ans / 2 - 1); //如:a = {1,2,1},会分成12和21。
}else{
for (int i = 1;i <= ans / 2;i++) ans1 += a[i] * pow(10,i - 1);
for (int i = ans / 2 + 1;i <= ans;i++) ans2 += a[i] * pow(10,i - ans / 2 - 1); //如:a = {1,2,3,4},会分成12和34。
}
if (ans1 == ans2) return true;
else return false; //判断是否是回文数。
}
int main(){ //霉好的开始。
int a,b;
cin >> a >> b; //输入a和b。
for (int i = a;i <= b;i++) if (hwzs(i)) cout << i << endl; //挨个判断是否是回文质数,是就输出。
return 0; //霉好的结束。
}
by LJY_ljy @ 2024-04-10 20:57:54
@lpx0228 额你也没说是 WA 还是 TLE 啊,无语了
但是至少问题解决了就没问题了,但是您的代码应该可以跑得更快一点