HDU 1431
可以先找出回文数,再用素数测试来判是否为素数即可。
打回文数时,因为左右对称,可以只枚举后半部,然后通过逆转得到前半部分。
#include <iostream>
#include <cstdio>
#include <time.h>
#include <stdlib.h>
#include <algorithm> using namespace std;
const int Max=200000;
int huiwen[Max],answer[Max];
int htop; int anter(int i){
int ans=1;
while(i){
ans*=10;
i--;
}
return ans;
} int gethuiwen(int t,int p){
int ans=0;
while(p>1){
ans*=10;
ans+=(t%10);
p/=10;
t/=10;
}
return ans;
} void for_back(){
htop=0;
for(int i=5;i<=9;i++)
huiwen[htop++]=i;
for(int i=2;i<=8;i++){
int p=anter(i/2);
// cout<<p<<endl;
if(i%2){
for(int k=0;k<=9;k++){
for(int t=0;t<p;t++){
if(t%10==0) continue;
int tail=gethuiwen(t,p);
// cout<<tail<<' '<<t<<endl;
huiwen[htop++]=(tail*10+k)*p+t;
}
}
}
else{
for(int t=0;t<p;t++){
if(t%10==0) continue;
int tail=gethuiwen(t,p);
huiwen[htop++]=(tail)*p+t;
}
}
}
// cout<<huiwen[htop-1]<<endl;
// for(int i=10;i<=50;i++)
// cout<<huiwen[i]<<endl;
} long long random(long long n){
return (long long )((double)rand()/RAND_MAX*n+0.5);
} long long quick(long long a,long long k,long long m){
long long ans=1;
while(k){
if(k&1){
ans=ans*a%m;
}
k>>=1;
a=a*a%m;
}
return ans;
} bool Miller_Rabin(long long k){
for(int i=1;i<=50;i++){
long long a=random(k-2)+1;
if(quick(a,k-1,k)!=1)
return false;
}
return true;
} int main(){
srand(time(0));
for_back();
int tmp=htop; htop=0;
// cout<<huiwen[tmp-1]<<endl;
for(int i=0;i<tmp;i++){
// cout<<"NO"<<endl;
if(Miller_Rabin(huiwen[i])){
// cout<<"YES"<<endl;
// break;
huiwen[htop++]=huiwen[i];
}
}
int a,b,ast;
while(scanf("%d%d",&a,&b)!=EOF){
ast=0;
for(int i=0;i<htop;i++){
if(huiwen[i]>=a&&huiwen[i]<=b)
answer[ast++]=huiwen[i];
}
sort(answer,answer+ast);
for(int i=0;i<ast;i++)
printf("%d\n",answer[i]);
cout<<endl;
}
return 0;
}
HDU 1431的更多相关文章
- HDU 1431 思维 基础数论
找范围内回文素数,最大到1e8,我就是要枚举回文串,再判素数,然后因为这种弱智思路死磕了很久题目. /** @Date : 2017-09-08 15:24:43 * @FileName: HDU 1 ...
- F题 hdu 1431 素数回文
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1431 素数回文 Time Limit: 2000/1000 MS (Java/Others) M ...
- HDU 1431 素数回文 离线打表
题目描述:给定一个区间,将这个区间里所有既是素数又是回文数的数输出来. 题目分析:这题的这个数据范围比较大,达到了10^8级别,而且输入的数据有多组,又因为判断一个数是否是回文数貌似只有暴力判断,时间 ...
- HDU 1431 素数回文
有人问我这个问题. 个人感觉暴搜会TLE O(n*sqrt(n)).n=100000000:(推断素数用2~sqrt(n)+1 去除) 还是枚举好了. 枚举 1~10000,把他每一位存下来,回文数已 ...
- 题解报告:hdu 1431 素数回文
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1431 Problem Description xiaoou33对既是素数又是回文的数特别感兴趣.比如说 ...
- hdu 1431 素数回文(暴力打表,埃托色尼筛法)
这题开始想时,感觉给的范围5 <= a < b <= 100,000,000太大,开数组肯定爆内存,而且100000000也不敢循环,不超时你打我,反正我是不敢循环. 这题肯定得打表 ...
- ACM_回文素数
回文素数 Time Limit: 2000/1000ms (Java/Others) Problem Description: 131号是一个主回文,因为它是一个素数和一个回文(当向后读时,它是相同的 ...
- FZU ICPC 2020 寒假训练 2
A - 排序 输入一行数字,如果我们把这行数字中的'5'都看成空格,那么就得到一行用空格分割的若 干非负整数(可能有些整数以'0'开头,这些头部的'0'应该被忽略掉,除非这个整数就是由 若干个'0'组 ...
- 转载:hdu 题目分类 (侵删)
转载:from http://blog.csdn.net/qq_28236309/article/details/47818349 基础题:1000.1001.1004.1005.1008.1012. ...
随机推荐
- ZOJ3629 Treasure Hunt IV(找规律,推公式)
Treasure Hunt IV Time Limit: 2 Seconds Memory Limit: 65536 KB Alice is exploring the wonderland ...
- 《Head First 设计模式》学习笔记——复合模式
模型-视图-控制器(MVC模式)是一种很经典的软件架构模式.在UI框架和UI设计思路中扮演着很重要的角色.从设计模式的角度来看,MVC模式是一种复合模式.它将多个设计模式在一种解决方式中结合起来,用来 ...
- luogu3799 妖梦拼木棒
题目大意 有n根木棒,现在从中选4根,想要组成一个正三角形,问有几种选法?木棒长度都<=5000. 题解 根据容斥原理,三角形两条边分别由长度相等的单根木棒组成,另一条边由两条小于该边长的木棒构 ...
- 【CQOI 2009】 余数之和
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1257 [算法] k mod i = k - [k / i] * i 所以 (k mo ...
- Pop3协议详解
POP3全称为Post Office Protocol version3,即邮局协议第3版.它被用户代理用来邮件服务器取得邮件.POP3采用的也是C/S通信 模型 用户从邮件服务器上接收邮件的典型 ...
- Java基础11一常用类
1.包装类 byte---java.lang.Byte char---java.lang.Character short—java.lang.Short int---java.lang.Integer ...
- Java基础4一数组
数组 数组是用来存储一组相同类型数据的数据结构 数组变量属于引用数据类型 数组中的元素可以是任何数据类型(基本类型和引用类型) 备注:数组中存放的都是相同数据类型的数据. 1.一维数组的声明 语法:数 ...
- Android-crop:漂亮的图片裁切工具
主要特点 Gradle构建和AAR 现代化的UI 向后兼容到SDK 10 配置简单 示例项目 使用 首先,在你的 manifest 文件中申明 CropImageActivity : <acti ...
- SourceInsight3.5 Space 替换Tab
# SourceInsight3.5 Space 替换Tab 公司要求所有的缩进都要使用空格,而不是Tab.至于使用Tab,还是Space来进行缩进,这在网上有各种各样的讨论,毕竟使用Tab可以节省很 ...
- 【Oracle】ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired
出现此错误的原因是因为事务等待造成的,找出等待的事务,kill即可. 下面是我当时遇到的错误: ---删除表t1时出现错误 SCOTT@GOOD> drop table t1; drop tab ...