本题耗时(5h32min+)
这道题属实让小卓同学很难受,在两位大佬的帮助下最后才AC了doge,感谢fcz和ysj两位好兄弟
注意点:
第一: 应该按照提示信息那样,先判断回文再判断素数(小卓第一次就是反过来,结果直接 44分)
第二: 题目给的范围是 1e+08 但是实际出现的最后一个答案是 9989899(这个结果通过打表法得出的 是fcz兄弟指点小卓同学的 ) 也就是说会出现浪费多余的时间(就是这个地方 卡小卓我了5个小时哦!!!!! 因为我不想按照提示那个方法去处理 就想着自己的思路去解决 我在此处没有判断之前 一直卡到 88分)
#include <iostream> // 万能开头也可以 #include <bits/stdc++.h>
#include <cmath>
using namespace std;
int main()
{
int a = 0;
int b = 0;
int i = 0;
int sum = 0; //用来判断回文数的变量
int t = 0; //用来判断回文数的变量
int flag = 0; //用来判断素数的变量
cin >> a >> b;
if (b >= 9999999) // 就是这一步极为重要 排除了多余的运算
{
b = 9999999;
}
if ((a>=5&&a<=100000000) && (b>=5&&b<100000000))
{
for (i=a; i<=b; i++)
{
sum = 0;
flag = 0;
t = i;
while (t != 0) // 判断回文数
{
sum = sum*10 + t%10;
t = t/10;
}
if (sum == i)
{
for (int j=2; j<=sqrt(i); j++) //判断素数
{
if (i%j == 0)
{
flag = 1;
}
}
if (flag == 0)
{
cout << i << endl; //注意输出格式
}
}
}
}
return 0;
}