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. 哈工大数据库系统 实验:练习并熟练掌握交互式 SQL 语言

    实验目的:基于给定的 OrderDB 数据库, 练习并熟练掌握交互式 SQL 语言实验环境:sql sever 2008 附:OrderDB 表结构及表间的关系 /* 1 查询职工工资按高低排序的前2 ...

  2. Python学习--10 面向对象编程

    面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 本节对于面向对象的概念不做 ...

  3. [HMLY]14.对iOS开发中使用MVVM的理解和使用(初级)

    前言 MVVMDemo 之前几个月一直在学习react-native,它的组件化开发真的是很棒,控件和页面的组件化在开发中可以很好的复用,节省开发时间.在那个时候还不知道react-native开发用 ...

  4. DW,DM,ODS的区别

    数据仓库的重要应用是将不同来源的数据和异构数据通过ETL整合在一起,为决策分析提供支撑,若在同一个数据库中分不同用户,此意义不大:假设所有有用户都在一个数据库里,如果因为某个原因数据库重启,那么会影响 ...

  5. python 数据清洗之字符串处理

    在数据分析中,特别是文本分析中,字符处理需要耗费极大的精力, 因而了解字符处理对于数据分析而言,也是一项很重要的能力. 字符串处理方法 首先我们先了解下都有哪些基础方法 首先我们了解下字符串的拆分sp ...

  6. 读取Oracle表结构数据

    <html lang="zh-cn"> <head> <meta name="generator" content="O ...

  7. 深入.NET平台和C#编程

    第一章  深入.NET框架 1.Microsoft.NET框架概述: 1).NET介绍 2)为什么需要.NET框架 通过如下两个问题说明为什么需要.NET框架 01,C#程序可以再不同平台(PDA,P ...

  8. Egret 显示容器

    1,显示容器:所有的容器都继承自DisplayObjectContainer , DisplayObjectContainer 又继承自DisplayObject: 2,想定义一个容器只要创建一个类, ...

  9. Java: MissingResourceException, "Can't find bundle for base name myMessage, locale zh_CN"

    在java中,在多语言国际化时可以用 *.java 类来作为资源文件使用. 1. 首先定义类, 类必须继承ListResourceBundle 类所在路径为: src/I18N public clas ...

  10. COCOS2D-JS入门-web端项目部署

    下载cocos2d-js文件,建议上官网下载(外国官网或者中国官网都可以) 外国官网:http://cocos2d-x.org/download(选择最新版即可,我下载时为3.9版本,大概300多M) ...