| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
又忘了\n怒贡献一次PE。。。#include <iostream>
#include <cstring>
#include <stdio.h>
#include <stdlib.h>
#include <cmath>
#include <algorithm>
using namespace std;
int primes[1229];
int cnt = 2;
int MX(int a, int b){return (a>b)?a:b;}
int MN(int a, int b){return (a<b)?a:b;}
void getPrime(int N){
//int cnt = 2;
primes[0] = 1, primes[1] = 2;
for(int i = 3; i < N; i+=2){
int q = (int)sqrt(i+0.0);
bool ss = 1;
for(int j = 2; j<cnt && primes[j]<= q; j++){
if(i%primes[j]==0){
ss=0; break;
}
}
if(ss){
primes[cnt] = i; cnt++;
}
}
}
int findIdx(int N){
int l = 0, u = cnt-1;
while(l<u){
int m = (l+u+1)/2;
if(primes[m] <= N){
l = m;
}
else{
u = m-1;
}
}
return l;
}
int main() {
getPrime(1100);
int N,C;
while(scanf("%d%d", &N, &C) > 0){
int mx = findIdx(N);
int l,u;
if(mx%2==0){
//jishuge
l = MX(0, mx/2-(C-1)), u = MN(mx, mx/2+(C-1));
}
else{
//oushuge
l = MX(0, mx/2-C+1), u = MN(mx, mx/2+C);
}
printf("%d %d:", N, C);
for(int i = l; i <= u; i++) printf(" %d", primes[i]);
printf("\n");
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator