社区讨论

家人们谁能改一改我的代码呀qwq~~~

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

讨论操作

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

当前回复
0 条
当前快照
1 份
快照标识符
@m2our9vo
此快照首次捕获于
2024/10/25 22:53
去年
此快照最后确认于
2024/10/25 22:55
去年
查看原帖
暴力枚举
得分:23pts
AC:#1/#9
WA:#2/#3/#4/#5/#6/#7#8
编译器:DEV-C++,语言:C++98
想法:(生成1~7位回文数,再判断是否为质数,在生成时,如果生成的回文数比最大值 bb 大了,就 break 一下。。。)

Code:

CPP
#include<algorithm>
#include<iostream>
#include<cstring>
#include<string.h>
#include<math.h>
#include<cmath>
#include<iomanip>
#define int long long
#define float double
using namespace std;
int a,b,tmp;
bool fun(int x)
{
	if(x<2)
	{
		return 0;
	}
	else
	{
		for(int i=2; i*i<=x; i++)
		{
			if(x%i == 0)
			{
				return 0;
			}
		}
	}
	return 1;
}
signed main(char *argc[],int argv)
{
	ios::sync_with_stdio(0);
	cin>>a>>b;
	for(int d1=5; d1<=9; d1++)            //一位
	{
		if(tmp>b)break;
		tmp = d1;
		if(fun(tmp))cout << tmp << endl;
	}
	for(int d1=1; d1<=9; d1+=2)            //两位
	{
		if(tmp>b)break;
		tmp = d1*1e1 + d1;
		if(fun(tmp))cout << tmp << endl;
	}
	for(int d1=1; d1<=9; d1+=2)            //三位
	{
		if(tmp>b)break;
		for(int d2=0; d2<=9; d2++)
		{
			if(tmp>b)break;
			tmp = d1*1e2 + d2*1e1 + d1;
			if(fun(tmp))cout << tmp << endl;
		}
	}
	for(int d1=1; d1<=9; d1+=2)            //四位
	{
		if(tmp>b)break;
		for(int d2=0; d2<=9; d2++)
		{
			if(tmp>b)break;
			tmp = d1*1e3 + d2*1e2 + d2*1e1 + d1;
			if(fun(tmp))cout << tmp << endl;
		}
	}
	for(int d1=1; d1<=9; d1+=2)            //五位
	{
		if(tmp>b)break;
		for(int d2=0; d2<=9; d2++)
		{
			if(tmp>b)break;
			for(int d3=0; d3<=9; d3++)
			{
				if(tmp>b)break;
				tmp = d1*1e4 + d2*1e3 + d3*1e2 + d2*1e1 + d1;
				if(fun(tmp))cout << tmp << endl;
			}
		}
	}
	for(int d1=1; d1<=9; d1+=2)            //六位
	{
		if(tmp>b)break;
		for(int d2=0; d2<=9; d2++)
		{
			if(tmp>b)break;
			for(int d3=0; d3<=9; d3++)
			{
				if(tmp>b)break;
				tmp = d1*1e5 + d2*1e4 + d3*1e3 + d3*1e2 + d2*1e1 + d1;
				if(fun(tmp))cout << tmp << endl;
			}
		}
	}
	for(int d1=1; d1<=9; d1+=2)            //七位
	{
		if(tmp>b)break;
		for(int d2=0; d2<=9; d2++)
		{
			if(tmp>b)break;
			for(int d3=0; d3<=9; d3++)
			{
				if(tmp>b)break;
				for(int d4=0; d4<=9; d4++)
				{
					if(tmp>b)break;
					tmp = d1*1e6 + d2*1e5 + d3*1e4 + d4*1e3 + d3*1e2 + d2*1e1 + d1;
					if(fun(tmp))cout << tmp << endl;
				}
			}
		}
	}
	for(int d1=1; d1<=9; d1+=2)            //八位
	{
		if(tmp>b)break;
		for(int d2=0; d2<=9; d2++)
		{
			if(tmp>b)break;
			for(int d3=0; d3<=9; d3++)
			{
				if(tmp>b)break;
				for(int d4=0; d4<=9; d4++)
				{
					if(tmp>b)break;
					tmp = d1*1e7 + d2*1e6 + d3*1e5 + d4*1e4 + d4*1e3 + d3*1e2 + d2*1e1 + d1;
					if(fun(tmp))cout << tmp << endl;
				}
			}
		}
	}
	return 0;
}
(感谢你能看到这里,有缘的大佬可以互关。。。)

回复

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

正在加载回复...