| ||||||||||
| 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 | |||||||||
太简单了,太烦了,贴一下下。。。#include<iostream>
using namespace std;
bool prime[1001];
int count[1001];
int n,c;
inline void Init(void)
{
int i,j;
memset(prime,true,sizeof(prime));
prime[1]=true;
for(i=2; i<33; i++)
{
if(prime[i])
{
for(j=2*i; j<1001; j+=i)
{
prime[j]=false;
}
}
}
count[0]=0;
for(i=1; i<1001; i++)
{
count[i]=count[i-1] + (prime[i]==true ? 1: 0);
}
}
// 1 2 3 5 7 11 13 17 19
// 1.奇数 2*c-1 起点 = a+a+2*c-1=len 2*a=len+1-2*c a=(len+1)/2-c
// 2.偶数 2*c 起点 = a+a+2*c=len 2*a=len-2*c a=(len )/2-c
//
inline void Solve(void) // 用inline
{
int a;
int i;
a=(count[n]+(count[n] & 1))/2 - c;
if(a<=0)
{
a=0; c=count[n];
}
else
c=2*c-(count[n]&1);
for(i=1; a>0 ; i++)
{
if(prime[i])
a--;
}
for(; c>0 ; i++)
{
if(prime[i])
{
c--;
printf("%d ",i);
}
}
printf("\n\n");
}
int main(void)
{
int i;
while(scanf("%d %d",&n,&c)==2)
{
Init();
printf("%d %d: ",n,c);
Solve();
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator