#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
bool weishu(int n){
if((n >= 1000 && n <= 9999) || (n >= 100000 && n <= 999999)){
return false;
}
return true;
}
bool huiwen1(int n){
vector<int> ret;
while(n > 0){
ret.push_back(n % 10);
n /= 10;
}
int flag = ret.size() - 1;
for (int i = 0; i <= flag / 2; i++){
if(ret[i] != ret[flag - i]){
return false;
}
}
return true;
}
bool huiwen2(int x)
{
vector<int> ret(20);
int flag = 0;
while (x > 0)
{
ret[flag] = x % 10;
x /= 10;
flag++;
}
for (int i = 0; i <= flag / 2; i++){
if (ret[i] != ret[flag - i - 1]){
return false;
}
}
return true;
}
bool huiwen3(int x)
{
int a[20], flag = 0;
while (x > 0){
a[flag] = x % 10;
x /= 10;
flag++;
}
for (int i = 0; i <= flag / 2; i++){
if (a[i] != a[flag - i - 1]){
return false;
}
}
return true;
}
bool isPrime(int n){
if (n <= 1){
return false;
}
if (n == 2){
return true;
}
for (int i = 2; i <= sqrt(n); i++){
if (n % i == 0){
return false;
}
}
return true;
}
int main(){
int a, b;
cin >> a >> b;
int m = min(9999999, b);
if(a == 2){
cout << 2 << endl;
}
if(a % 2 == 0){
a++;
}
for (int i = a; i <= m; i ++){
if(weishu(i) && huiwen3(i) && isPrime(i)) {
printf("%d\n", i);
}
}
return 0;
}
我检索各种方法一点一点成功AC的,问题在于我的huiwen2函数与huiwen3函数。两个函数中huiwen2的数组是vector,huiwen3的数组是普通数组,除此之外,其他逻辑完全相同。我一直以为vector和普通数组的性能差距没那么大,但是huiwen2函数中用vector开数组超时了,而huiwen3函数用普通数组没有超时,顺利AC了。像huiwen1函数中我逐个向vector数组中插入元素导致的超时,我可以接受。但是huiwen2导致的超时我无法接受。请各位大佬帮忙解释一下,这是luogu评测的原因,还是说就是vector与普通数组的原因。