社区讨论

34分WA,调必关

P1217[USACO1.5] 回文质数 Prime Palindromes参与者 2已保存回复 6

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
6 条
当前快照
1 份
快照标识符
@mk16wttb
此快照首次捕获于
2026/01/05 21:22
2 个月前
此快照最后确认于
2026/01/09 14:25
2 个月前
查看原帖
和题目提示思路差不多 先找回文数再判断的质数
CPP
#include<bits/stdc++.h>
using namespace std;
bool zhi(int a){
	int x=sqrt(a);
	for(int i=2;i<=x;i++){
		if(a%i==0)return 0;
	}
	return 1;
}
int main(){
	int a,b,num;
	cin>>a>>b;
	if(10<a)return 0;
	for(int i=1;i<=9;i++){//1
		num=i;
		if(zhi(num) && num<=b && num>=a)cout<<num<<endl;
	}
	if(10>b || 100<a)return 0;
	for(int i=1;i<=9;i+=2){//2
		num=i*11;
		if(zhi(num) && num<=b && num>=a)cout<<num<<endl;
	}
	if(100>b || 1000<a)return 0;	
	for(int i=1;i<=9;i+=2){//3
		for(int j=0;j<=9;j++){
			num=i*101+j*10;
			if(zhi(num) && num<=b && num>=a)cout<<num<<endl;			
		}
	}
	if(1000>b || 10000<a)return 0;
	for(int i=1;i<=9;i+=2){//4
		for(int j=0;j<=9;j++){
			num=i*1001+j*110;
			if(zhi(num) && num<=b && num>=a)cout<<num<<endl;			
		}
	}
	if(10000>b || 100000<a)return 0;
	for(int i=1;i<=9;i+=2){//5
		for(int j=0;j<=9;j++){
			for(int o=0;o<=9;o++){
				num=i*10001+j*1010+o*100;
				if(zhi(num) && num<=b && num>=a)cout<<num<<endl;		
			}			
		}
	}
	if(100000>b || 1000000<a)return 0;
	for(int i=1;i<=9;i+=2){//6
		for(int j=0;j<=9;j++){
			for(int o=0;o<=9;o++){
				num=i*100001+j*10010+o*1100;
				if(zhi(num) && num<=b && num>=a)cout<<num<<endl;		
			}			
		}
	}
	if(1000000>b || 10000000<a)return 0;
	for(int i=1;i<=9;i+=2){//7
		for(int j=0;j<=9;j++){
			for(int o=0;o<=9;o++){
				for(int p=0;p<=9;p++){
					num=i*1000001+j*100010+o*10100+p*1000;
					if(zhi(num) && num<=b && num>=a)cout<<num<<endl;					
				}
			}			
		}
	}
	if(10000000>b || 100000000<a)return 0;
	for(int i=1;i<=9;i+=2){//8
		for(int j=0;j<=9;j++){
			for(int o=0;o<=9;o++){
				for(int p=0;p<=9;p++){
					num=i*10000001+j*1000010+o*100100+p*11000;
					if(zhi(num) && num<=b && num>=a)cout<<num<<endl;					
				}
			}			
		}
	}
	if(100000000>b || 1000000000<a)return 0;
	for(int i=1;i<=9;i+=2){//9
		for(int j=0;j<=9;j++){
			for(int o=0;o<=9;o++){
				for(int p=0;p<=9;p++){
					for(int m=0;m<=9;m++){
						num=i*100000001+j*10000010+o*1000100+p*101000+m*10000;
						if(zhi(num) && num<=b && num>=a)cout<<num<<endl;
					}						
				}
			}			
		}
	}
	return 0;
} 







回复

6 条回复,欢迎继续交流。

正在加载回复...