USACO Section1.5 Prime Palindromes 解题报告

    pprime解题报告 —— icedream61 博客园(转载请注明出处)
------------------------------------------------------------------------------------------------------------------------------------------------
【题目】
  求a到b之间的所有回文素数(即又是素数又是回文数的数)。
【数据范围】
  5<=a,b<=100,000,000
【输入样例】
  5 500
【输出样例】
  5
  7
  11
  101
  131
  151
  181
  191
  313
  353
  373
  383
------------------------------------------------------------------------------------------------------------------------------------------------
【分析】
  筛法求素数+回文数判断。
------------------------------------------------------------------------------------------------------------------------------------------------
【总结】
  第一个点就卡住了,运行时错误。
  题目开始出现大数据了,以后要在交之前测试一下边界情况。
  本机测试没问题,经过多次OJ上测试,得出是定义数组的大小问题。数据给出b的最大值的是100,000,000,但若我bool数组建这么大,会爆运行时错误。
  我的解决办法是,实测满足条件的最大数maxd=9,989,899,于是数组范围定义为d[0~maxd],AC了……
  本题问题在于,我对USACO不甚了解。我查了USACO的内存限制,程序所用内存不能超过16M。
  maxd=9,989,899时,所占内存约为10/8=1.25M,肯定没问题。
  maxd=100,000,000时,所占内存约为100/8=12.5M,应该不超内存的;而USACO上面显示,我的代码运行0.000s时,使用了312KB的内存,这个看来自然是不可信……不知道为什么会超内存,好奇怪,这是为什么?在此向大家请教,希望知道的同学不吝赐教,多谢!

------------------------------------------------------------------------------------------------------------------------------------------------

【代码】

 1 /*
 2 ID: icedrea1
 3 PROB: pprime
 4 LANG: C++
 5 */
 6
 7 #include <iostream>
 8 #include <fstream>
 9 using namespace std;
10
11 const int maxd = 9989899;
12 //const int maxd = 100000000;
13
14 int a,b;
15 bool d[1+maxd];
16
17 int bit[9],l;
18 bool isPal(int x)
19 {
20     l=0;
21     while(x) { bit[++l]=x%10; x/=10; }
22     for(int i=1;i<=(l>>1);++i)
23         if(bit[i]!=bit[l+1-i]) return false;
24     return true;
25 }
26
27 int main()
28 {
29     ifstream in("pprime.in");
30     ofstream out("pprime.out");
31
32     d[0]=d[1]=true;
33     for(int i=2;i<=10000;++i)
34         if(!d[i])
35             for(int j=i+i;j<=maxd;j+=i) d[j]=true;
36
37     in>>a>>b;
38
39     for(int i=a;i<=b;++i)
40         if(i<=maxd && !d[i] && isPal(i)) out<<i<<endl;
41
42     in.close();
43     out.close();
44     return 0;
45 }
时间: 2024-10-13 17:35:44

USACO Section1.5 Prime Palindromes 解题报告的相关文章

USACO Section1.2 Dual Palindromes 解题报告

dualpal解题报告 —— icedream61 博客园(转载请注明出处)------------------------------------------------------------------------------------------------------------------------------------------------[题目] 给出N和S,找出大于S的前N个双回文数. 双回文数定义:在二进制至十进制中的两种(或两种以上)进制下是回文数.[数据范围] 1

USACO Section1.3 Prime Cryptarithm 解题报告

crypt1解题报告 —— icedream61 博客园(转载请注明出处)------------------------------------------------------------------------------------------------------------------------------------------------[题目] 用给出的N个数字,替换以下竖式,能生成多少个正确的竖式? * * * x * * ------- * * * * * * ---

USACO Section1.2 Milking Cows 解题报告

milk2解题报告 —— icedream61 博客园(转载请注明出处)------------------------------------------------------------------------------------------------------------------------------------------------[题目] N个农民,每个农民从L[i]到R[i]时间给奶牛挤奶.问最长的一直有人挤奶的时间,和最长的没有人挤奶的时间.[数据范围] 1<=N

USACO Section1.2 Palindromic Squares 解题报告

palsquare解题报告 —— icedream61 博客园(转载请注明出处)------------------------------------------------------------------------------------------------------------------------------------------------[题目] 把1~300中,其平方在B进制下是回文数的数进行输出.每个数x输出一行,输出B进制下的x和x²,用空格隔开. 注意,10~

USACO Section1.5 Number Triangles 解题报告

numtri解题报告 —— icedream61 博客园(转载请注明出处)------------------------------------------------------------------------------------------------------------------------------------------------[题目] 有一个数字的金字塔,形状如下    7   3 8  8 1 0 2 7 4 4 4 5 2 6 5 要从顶端开始走,每次只能向

USACO Section1.5 Superprime Rib 解题报告

sprime解题报告 —— icedream61 博客园(转载请注明出处)------------------------------------------------------------------------------------------------------------------------------------------------[题目] 列出所有N位的超级素数. 所谓超级素数,即指其任意位前缀均为素数.例如7.73.733.7331均为素数,故而7331为超级素数

USACO Section1.1 Broken Necklace 解题报告

beads解题报告 —— icedream61 博客园(转载请注明出处)------------------------------------------------------------------------------------------------------------------------------------------------[题目] 输入文件:第一行N:第二行一个字符串A,长度为N.字符串中,仅有r.w.b三种字符,分别代表红.白.蓝. A代表一串项链,有三种颜

USACO Section1.3 Mixing Milk 解题报告

milk解题报告 —— icedream61 博客园(转载请注明出处)------------------------------------------------------------------------------------------------------------------------------------------------[题目] 我是牛奶制造商,我一天需要N加仑的牛奶,总共有M个农民可以供给我. 这M个农民的信息共M行,第i个农民有num[i]加仑牛奶,每加仑

USACO Section1.4 Arithmetic Progressions 解题报告

ariprog解题报告 —— icedream61 博客园(转载请注明出处)------------------------------------------------------------------------------------------------------------------------------------------------[题目] 找出所有在双平方数集合S中长度为N的等差数列. 双平方数集合S:所有能表示成p²+q²的数的集合,其中0<=p,q<=M.[