社区讨论
可以AC,但为啥两个IDE运行的结果不一样
P1217[USACO1.5] 回文质数 Prime Palindromes参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @locnuz1s
- 此快照首次捕获于
- 2023/10/30 16:51 2 年前
- 此快照最后确认于
- 2023/11/05 03:52 2 年前
CPP
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
int t[11],a,b;
bool isprime(int x) {
for(int i=2; i*i<=x; i++) {
if(x%i==0)
return false;
}
return true;
}
int wei(int x) {
int t=0;
while(x) {
x/=10;
t++;
}
return t;
}
void huiwen(int x,int h) { //h代表最高有多少位
int k=0;
if(h%2!=0) { //除11外,所有回文质数都是奇数位
if(x>h/2) {
for(int i=0; i<h; i++) {
k=k+(t[i]*pow(10,h-i-1));
}
if(isprime(k)&&k>=a&&k<=b)
printf("%d\n",k);
return;
}
for(int i=0; i<=9; i++) {
t[x]=i;
t[h-x-1]=i;
if(t[0]!=0)
huiwen(x+1,h);
}
}
}
int main() {
scanf("%d%d",&a,&b);
if(a<=5&&b>=5)
printf("5\n");
if(a<=7&&b>=7)
printf("7\n");
if(a<=11&&b>=11)
printf("11\n"); //特判
for(int i=3; i<=wei(b); i++) {
huiwen(0,i);
}
return 0;
}
上面这段代码提交上去可以AC,但用codeblocks17.12编译后无法得到正确答案,用dev-c++5.11(我自己手动安装了GCC8.1.0)却可以,我感到很奇怪,是不是代码里有什么未定义行为?
回复
共 2 条回复,欢迎继续交流。
正在加载回复...