hdoj 2098 分拆素数和
来源:互联网 发布:北京日知图书有限公司 编辑:程序博客网 时间:2024/05/20 06:50
题目:分拆素数和
最开始打表,把10000以内的素数都存起来,这是为了多次验证素数的时候节约时间。
然后再查找,对表内小于给定的N的数x,查找N-x是否位于素数表内。
查找时候没有加x小于N-x的限制条件,所以查出来的个数是真正题目要求输出数的两倍,其中包含了x和N-x能相同的这一对,整数(准确说应该是奇数)除2后这一对就消除了。
另外注意STL里的查找函数find,用数组的话找不到的话返回的是数组元素最后一个地址。不像是其他类似vector,set等容器的.end()
代码如下:
140MS 236K
#include<cstdio>#include<algorithm>using namespace std;int main(){ bool flag = true; int num, arr[1500]={2,3,5}, cnt=3; for(int i=7; i<=10000; ++i) { flag=true; for(int j=0; j<cnt&&arr[j]*arr[j]<=i; ++j) { if(!(i%arr[j])) { flag=false; break; } } if(flag) arr[cnt++]=i; } int casecnt; while(scanf("%d", &num) && num) { casecnt=0; for(int i=0; arr[i]<num; ++i) { int* p = find(arr, arr+cnt-1, num-arr[i]); if(p!=arr+cnt-1) ++casecnt; } printf("%d\n", casecnt/2); } return 0;}
- hdoj 2098 分拆素数和
- hdoj 2098 分拆素数和
- hdoj 2098 分拆素数和
- hdoj.2098 分拆素数和 20140723
- hdoj 2098 分拆素数和
- HDOJ 2098 分拆素数和
- HDOJ 2098 分拆素数和
- hdoj--2098--分拆素数和(水题)
- HDOJ 2098 分拆素数和
- HDOJ 2098 分拆素数和
- hdoj-2098-分拆素数和
- hdoj-2098-分拆素数和
- HDOJ--2098分拆素数和
- hdoj 2098 分拆素数和
- HDOJ 2098 分拆素数和
- HDOJ 2098 分拆素数和
- HDOJ 分拆素数和 2098(素数打表)
- hdoj 2098 分拆素数和 【素数打表】
- C++ string assign()赋值常用方法
- FFMPEG more samples than frame size (avcodec_encode_audio2) 的解决方案
- POJ 3468 A Simple Problem with Integers (线段树)
- cocos2d-x-2.2.1的ccs的gui库绑定到lua
- shell 判断字符串是否为数字
- hdoj 2098 分拆素数和
- 如何在已存在AlwaysOn Group中DB上进行数据库还原
- [Python下载CSDN博客]4. V3版本_使用正则表达式分析HTML(一)
- 解决Spring MVC 对AOP不起作用的问题
- php生产环境XHProf 性能分析工具
- 切换用户导致环境变量无法生效解决办法
- SQL Server拆分字符串的3常用种方法
- linux ps命令详解
- tomcat目录结构