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 }
posted on 2015-03-09 21:08 IceDream61 阅读(253) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端