HDOJ 1319 Prime Cuts<数论>
来源:互联网 发布:开淘宝网店的照片要求 编辑:程序博客网 时间:2024/06/01 08:43
学会了不难。通过这道题学习了两点:
1:筛选法求素数。
2:在写比较长的程序的时候,给每个功能部分加上注释,思路会更清晰。
题意:
1.题目中所说的素数并不是真正的素数,包括1;
2.需要读懂题意,对于输入的n和c,如果1到n之间有偶数个素数则打印2c个数,奇数个素数则打印2c-1个数;
3.打印的数是所有素数中位于中间位置的那些数。
4.虽然数据量n<100.但是应确定第100+个素数是那个数,稍微把数组开大一些。
#include<iostream>#include<cstdio>#include<cmath>using namespace std;const int maxn=1050;bool isprime[maxn];int prime[200];//筛选法求素数void Erato(){ isprime[0]=false; isprime[1]=true; isprime[2]=true; //初始化 for(int i=3;i<maxn;i++){ isprime[i++]=true;//奇数 isprime[i]=false;//偶数 } //判断素数 int n=sqrt(maxn); for(int i=3;i<=n;i+=2) for(int j=i+i;j<maxn;j+=i) isprime[j]=false; //将素数方如prime中,包括1 prime[0]=1; prime[1]=2; int j=2; for(int i=3;i<maxn;i+=2) if(isprime[i]) prime[j++]=i;}int main (){ Erato(); int n,c,count; int printcount,str,end; while(~scanf("%d%d",&n,&c)) { printf("%d %d:", n, c); count=0; int i=0; //统计素数的个数 while(prime[i++]<=n) count++; //统计要打印素数的个数 if(count%2) printcount=2*c-1; else printcount=2*c; // 计算数据的起始与终止位置 if(printcount>=count) str=0,end=count-1; else{ str=(count-printcount)/2; end=str+printcount-1; } for(int i=str;i<=end;i++) printf(" %d",prime[i]); printf("\n\n"); } return 0;}
0 0
- HDOJ 1319 Prime Cuts<数论>
- hdoj.1319 Prime Cuts 20140821
- POJ 1595 && HDU 1319 Prime Cuts(数论)
- HDU 1319 Prime Cuts
- pku 1319Prime Cuts
- HDU 1319 Prime Cuts & ZOJ 1312 Prime Cuts
- prime cuts
- Prime Cuts
- Prime Cuts
- hdu1319 Prime Cuts(数论:素数打表,不难但是恶心)
- HDU 1319 Prime Cuts(素数。。。)
- zoj1312 Prime Cuts
- fjnu 1848 Prime Cuts
- JOJ1148:Prime Cuts
- poj 1595 Prime Cuts
- HDU1319 & PKU3518 - Prime Cuts
- HOJ 1107 Prime Cuts
- Uva 406 - Prime Cuts
- java Map集合一
- 人之因此異於禽獸者幾希
- str_replace、substr、strrpos组合使用来获取位置
- 【bzoj1419】Red is good 期望dp
- AEAI HR_v1.5.2升级说明,开源人力资源管理系统
- HDOJ 1319 Prime Cuts<数论>
- 第7章 线程
- How to unzip or zip files content
- 如何做压测
- 播放res/raw文件(MP4)
- Android实现获取短信验证码的功能(二)
- HTML5之语义化标签
- POJ 1664 分苹果(递归)。
- C++函数指针、函数对象与C++11 function对象对比分析