[搜索]USACO-1.5-Prime Palindromes
2012-06-19 21:38
387 查看
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 inthe 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)
57 11 101 151131 181 353191 313 373 383
给定一个范围,输出在这个范围内(包含边界)的所有回文素数.
注意以后有回文数的情况,尽量先用DFS生成回文数表,然后在做处理,不要去枚举产生回文数.
这里打出回文数表以后先排序,然后二分查出上下界,把该范围中的所有素数输出即可。
代码:
/* ID:yfr_1992 PROG:pprime LANG:C++ */ #include<iostream> #include<cstdio> #include<cstring> #include<vector> #include<cstdlib> #include<algorithm> #include<cmath> using namespace std; vector<int> plist; int temp[10],sz; void dfs(int cur,int limit){ if(cur>((limit-1)>>1)){ int sum = 0; for(int i=0;i<limit;i++)sum = sum*10 + temp[i]; plist.push_back(sum); return; } for(int i=0;i<10;i++){ temp[cur] = i,temp[limit-1-cur] = i; dfs(cur+1,limit); } } bool isPrime(int x){ for(int i=2;i<=(int)sqrt(x)+1;i++){ if((x%i)==0)return false; } return true; } int bs_lower(int x){ int l = 0, r = sz-1 , m ; while(l<=r){ m = (l+r)>>1; if(plist[m]>=x)r = m-1; else l = m+1; } return l; } int bs_upper(int x){ int l = 0, r = sz-1 , m ; while(l<=r){ m = (l+r)>>1; if(plist[m]>x)r = m-1; else l = m+1; } return r; } int main(){ freopen("pprime.in","r",stdin); freopen("pprime.out","w",stdout); for(int i=1;i<=8;i++)dfs(0,i); sort(plist.begin(),plist.end()); sz = 1; for(int i=1;i<(int)plist.size();i++){ if(plist[i]!=plist[i-1])plist[sz++] = plist[i]; } int a,b; scanf("%d%d",&a,&b); int s = bs_lower(a), e = bs_upper(b); for(int i=s;i<=e;i++){ if(isPrime(plist[i]))printf("%d\n",plist[i]); } return 0; }
相关文章推荐
- USACO Section 1.5 Prime Palindromes - 换个搜索顺序效率会提高不少
- USACO 1.5 prime Palindromes 回文质数(vector的使用)
- USACO: Section 1.5 -- PROB Prime Palindromes
- [USACO1.5]回文质数 Prime Palindromes(暴力枚举)
- USACO Section1.5 Prime Palindromes 解题报告
- USACO 1.5 Prime Palindromes
- P1217 [USACO1.5]回文质数 Prime Palindromes(#1 - 6)
- USACO1.5 回文质数 Prime Palindromes
- USACO-Section1.5 Prime Palindromes
- USACO Section 1.5 Prime Palindromes
- USACO sec1.5 Prime Palindromes
- USACO1.5 回文质数 Prime Palindromes
- USACO-Section1.5 Prime Palindromes【暴力枚举】
- USACO 1.5-Prime Palindromes
- USACO 1.5 Prime Palindromes
- 洛谷P1217 [USACO1.5]回文质数 Prime Palindromes
- USACO - Chapter1 Section 1.5 - Prime Palindromes
- USACO 1.5 Prime Palindromes(枚举)
- <NOIP> 25 . P1217 [USACO1.5]回文质数 Prime Palindromes
- USACO1.5]回文质数 Prime Palindromes