POJ1595 Prime Cuts [暴力打表]

来源:互联网 发布:知乎dota2 lol 编辑:程序博客网 时间:2024/06/08 20:49

题意:

给定一个数字n,将1到n中的所有质数按照中心值为c的规定输出,具体规定题目写得很清楚。

思路:

简单的暴力打表题。


调智能车调得郁闷,找个水题A掉缓冲一下心情,所以这题就这么牺牲了。


#include<iostream>#include<vector>#include<string>#include<queue>#include<cmath>#include<algorithm>#define llong long long#define Min(a,b) (a<b?a:b)#define Max(a,b) (a>b?a:b)#define Abs(a) ((a)>0?(a):-(a))#define Mod(a,b) (((a)-1+(b))%(b)+1)using namespace std;int n,m;const int N=1005;const int inf=99999999;int has[N];//存储n值对应的prime下表int prime[N];//存储所有的质数void solve(){int k=1;prime[k++]=1;has[1]=1;for(int i=2;i<=N;i++){bool flag=true;for(int j=2;j<=sqrt(double(i+1));j++){if(!(i%j)){flag=false;break;}}if(flag){prime[k]=i;k++;}has[i]=k-1;}}int main(){solve();while(scanf("%d%d",&n,&m)!=EOF){printf("%d %d:",n,m);int center=has[n],l,r;if(center%2==0){center/=2;l=center-m+1;r=center+m;}else{center=center/2+1;l=center-m+1;r=center+m-1;}l=Max(l,1);r=Min(r,has[n]);for(int i=l;i<=r;i++){printf(" %d",prime[i]);}printf("\n\n");}return 0;}


原创粉丝点击