poj 1595 Prime Cuts
好久沒有刷題了,第一題還算順利,這道題難度不大,但是卻有嚴格的輸出格式,少打一個空行就直接presentation error了,不過改一下就AC了
用的素數篩,開始預處理素數,之後就隻用讀表了
AC的代碼:
#include <stdio.h> #define MAXN 1002 int prime[MAXN]; //內容0代表素數 //對數字進行預處理,直接打印出1002以內素數 void PickPrime() { //先打出素數表 prime[1]=0; //開始標記prime[1]為素數 int i,j; for(i=2;i<MAXN;i++) { if(prime[i]==0) //如果prime[i]是素數就把他的倍數都篩掉 { for(j=2*i;j<MAXN;j+=i) prime[j]=1; } } } int main() { int n,c,reallPrime[MAXN]; int i,j,start,end; PickPrime(); while(scanf("%d",&n)!=EOF) { scanf("%d",&c); j=0; for(i=1;i<=n;i++) if(prime[i]==0) reallPrime[++j]=i; printf("%d %d:",n,c); //就是在j個數中選取中間c個數 if(c<=j) { //有even個素數 if(j%2==0) { start=(j-c*2)/2; end=start+c*2; for(i=start+1;i<=end;i++) printf(" %d",reallPrime[i]); } //有odd個素數 else { start=(j-c*2+1)/2; end=start+c*2-1; for(i=start+1;i<=end;i++) printf(" %d",reallPrime[i]); } } else { for(i=1;i<=j;i++) printf(" %d",reallPrime[i]); } printf("\n\n"); } return 0; }
最後更新:2017-04-03 07:57:12