Prime Palindromes

The number 151 is a prime palindrome because it is both a prime number and a palindrome (it is the same number when read forward as backward). Write a program that finds all prime palindromes in the range of two supplied numbers a and b (5 <= a < b <= 100,000,000); both a and b are considered to be within the range .

PROGRAM NAME: pprime

INPUT FORMAT

Line 1: Two integers, a and b

SAMPLE INPUT (file pprime.in)

5 500

OUTPUT FORMAT

The list of palindromic primes in numerical order, one per line.

SAMPLE OUTPUT (file pprime.out)

5
7
11
101
131
151
181
191
313
353
373
383 ——————————————————————题解
就是枚举回文数然后筛,写了一个logn的筛法(Miller Rabin),结果乘法没开longlong导致wa了一次
枚举素数我手敲了八个循环……后来ac看analysis……只要10-9999然后翻转就行orz我感觉自己真是个辣鸡
而且这位小哥以神一般的数学直觉便判断出任何二倍长的回文数一定是11的倍数,那么我们就不用考虑偶数个的了。小学数学老师你还要我吗要我吗……
这轻描淡写的一句话顶上了我30++行代码orz
那个版权不敢盗,所以不粘别人代码,贴上我易读的代码……以及写的很丑的Miller Rabin(check函数)
 /*
PROB: pprime
LANG: C++
ID: jiaqi si
*/
#include <iostream>
#include <string.h>
#include <cstdlib>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <vector>
#include <ctime>
#define ivory
#define mo 1000000007
#define siji(i,x,y) for(int i=(x);i<=(y);i++)
#define gongzi(j,x,y) for(int j=(x);j>=(y);j--)
#define xiaosiji(i,x,y) for(int i=(x);i<(y);i++)
#define sigongzi(j,x,y) for(int j=(x);j>(y);j--)
#define pii pair<int,int>
#define fi first
#define se second
#define mo 1000000007
using namespace std;
int ans[],cnt;
int a,b;
int mpow(int c,int d,int k) {
if(d==) {
return c%k;
}
else {
int tmp=mpow(c,d/,k)%k;
if(d&) {
return 1LL*tmp*tmp%k*c%k;
}
else {
return 1LL*tmp*tmp%k;
}
}
}
bool _check(int v,int s,int k) {
if(v==) return true;
siji(i,,s) {
if(1LL*v*v%k==) {
if(v%k==k-){return true;}
else return false;
}
v=1LL*v*v%k;
}
return false;
}
bool check(int k) {
int tmp=k-;
int s=;
while(tmp%(<<s)==) ++s;
--s;
int d=tmp/(<<s);
int tmp1=mpow(,d,k);
int tmp2=mpow(,d,k);
int tmp3=mpow(,d,k);
bool f=;
if(!_check(tmp1,s,k)) {f=;}
else if(k> && (!_check(tmp2,s,k))) {f=;}
else if(k> && (!_check(tmp3,s,k))) {f=;}
return f;
}
int binary(int k){
int l=,r=cnt;
while(l<r) {
int mid=(l+r+)>>;
if(ans[mid]>=k) r=mid-;
else l=mid;
}
return l;
}
int main() {
#ifdef ivory
freopen("pprime.in","r",stdin);
freopen("pprime.out","w",stdout);
#else
//freopen("f1.in","r",stdin);
#endif
ans[++cnt]=;
siji(i,,) {
if(i%!= && check(i)) ans[++cnt]=i;
}
siji(i,,) {
if(i%==)continue;
int tmp=i*+i;
if(check(tmp)) ans[++cnt]=tmp;
}
siji(i,,) {
if(i%==) continue;
siji(j,,) {
int tmp=i*+j*+i;
if(check(tmp)) ans[++cnt]=tmp;
}
}
siji(i,,) {
if(i%==) continue;
siji(j,,) {
int tmp=i*+j*+j*+i;
if(check(tmp)) ans[++cnt]=tmp;
}
}
siji(i,,) {
if(i%==) continue;
siji(j,,) {
siji(k,,) {
int tmp=i*+j*+k*+j*+i;
if(check(tmp)) ans[++cnt]=tmp;
}
}
}
siji(i,,) {
if(i%==) continue;
siji(j,,) {
siji(k,,) {
int tmp=i*+j*+k*+k*+j*+i;
if(check(tmp)) ans[++cnt]=tmp;
}
}
}
siji(i,,) {
if(i%==) continue;
siji(j,,) {
siji(k,,) {
siji(h,,) {
int tmp=i*+j*+k*+h*+k*+j*+i;
if(check(tmp)) ans[++cnt]=tmp;
} }
}
}
siji(i,,) {
if(i%==) continue;
siji(j,,) {
siji(k,,) {
siji(h,,) {
int tmp=i*+j*+k*+h*+h*+k*+j*+i;
if(check(tmp)) ans[++cnt]=tmp;
}
}
}
}
scanf("%d%d",&a,&b);
int il=binary(a);
int ir=binary(b);
if(ans[ir+]==b) ir++;
siji(i,il+,ir) {
printf("%d\n",ans[i]);
}
}

 

USACO 1.5 Prime Palindromes的更多相关文章

  1. USACO Section1.5 Prime Palindromes 解题报告

    pprime解题报告 —— icedream61 博客园(转载请注明出处)--------------------------------------------------------------- ...

  2. P1217 [USACO1.5]回文质数 Prime Palindromes(求100000000内的回文素数)

    P1217 [USACO1.5]回文质数 Prime Palindromes 题目描述 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找 ...

  3. 洛谷 P1217 [USACO1.5]回文质数 Prime Palindromes

    P1217 [USACO1.5]回文质数 Prime Palindromes 题目描述 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找 ...

  4. luogu P1217 [USACO1.5]回文质数 Prime Palindromes x

    P1217 [USACO1.5]回文质数 Prime Palindromes 题目描述 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找 ...

  5. 4190. Prime Palindromes 一亿以内的质数回文数

    Description The number 151 is a prime palindrome because it is both a prime number and a palindrome ...

  6. <Sicily>Prime Palindromes

    一.题目描述 The number 151 is a prime palindrome because it is both a prime number and a palindrome (it i ...

  7. USACO Prime Palindromes 构造回文数

    这道题目一点也不卡素数的判断 就是朴素的sqrt(n) 也不卡 所以~放心的用吧. 构造回文的时候看了HINT 其中是这么写的: Generate palindromes by combining d ...

  8. 【USACO 1.5】Prime Palindromes

    /* TASK: pprime LANG: C++ SOLVE: 枚举数的长度,dfs出对称的数,判断是否在范围内,是否是素数 原来想着枚举每个范围里的数,但是显然超时,范围最大是10^9. 对称的数 ...

  9. USACO Section 1.5 Prime Palindromes 解题报告

    题目 题目描述 题目就是给定一个区间[a,b]((5 <= a < b <= 100,000,000)),我们需要找到这个区间内所有既是回文串又是素数的数字. 输入样例 5 500 ...

随机推荐

  1. ASP.NET Zero--10.一个例子(3)商品分类管理-新建

    1.打开Index视图 页面中添加一个按钮,代码如下: <div class="row margin-bottom-5"> <div class="co ...

  2. ABAP 通过sumbit调用另外一个程序使用job形式执行-简单例子

    涉及到两个程序: ZTEST_ZUMA02 (主程序) ZTEST_ZUMA(被调用的程序,需要以后台job执行) "ztest_zuma 的代码 DATA col TYPE i VALUE ...

  3. angularjs 路由回退,返回到上一个路由

    在现阶段比较流行的angularjs框架中:路由是一个比较重要的应用:angularjs的单页面是其强大功能之一: 所有的页面其实就只是在一个页面就实现的:angularjs通过对路由的控制来进行页面 ...

  4. 虚拟机学习centos服务器版

    虚拟机安装下载教程:http://www.cnblogs.com/CyLee/p/5615322.html centos 6.5下载地址:http://www.centoscn.com/CentosS ...

  5. 一、spark入门之spark shell:wordcount

    1.安装完spark,进入spark中bin目录: bin/spark-shell   scala> val textFile = sc.textFile("/Users/admin/ ...

  6. springmvc中返回页面,只在iframe中跳转,而不是整个页面,解决方法。

    问题描述:在我写的主页面中用到了iframe,其中在iframe中有一个button点击提交,然后在Controller中返回页面的时候,是在iframe中打开的,而不是整个页面. 最开始我想用aja ...

  7. Nexpose

    下载: https://www.rapid7.com/products/nexpose/nexpose-enterprise-trial-thank-you.jsp注册: https://www.ra ...

  8. CentOS7安装完毕,重新开机启动后显示: Initial setup of CentOS Linux 7 (core)

    CentOS7安装完毕,重新开机启动后显示: Initial setup of CentOS Linux 7 (core) 1) [x] Creat user 2) [!] License infor ...

  9. 使用Nginx+Lua(OpenResty)开发高性能Web应用

    摘自(http://jinnianshilongnian.iteye.com/blog/2280928) 在互联网公司,Nginx可以说是标配组件,但是主要场景还是负载均衡.反向代理.代理缓存.限流等 ...

  10. shrio配置说明

    1.引入Shiro的Maven依赖 <!-- Spring 整合Shiro需要的依赖 --> <dependency> <groupId>org.apache.sh ...