社区讨论
家人们谁能改一改我的代码呀qwq~~~
P1217[USACO1.5] 回文质数 Prime Palindromes参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @m2our9vo
- 此快照首次捕获于
- 2024/10/25 22:53 去年
- 此快照最后确认于
- 2024/10/25 22:55 去年
AC:#1/#9
WA:#2/#3/#4/#5/#6/#7#8
编译器:DEV-C++,语言:C++98
想法:(生成1~7位回文数,再判断是否为质数,在生成时,如果生成的回文数比最大值 大了,就 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 条回复,欢迎继续交流。
正在加载回复...