社区讨论

可以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 条回复,欢迎继续交流。

正在加载回复...