本题绝对坑。。说是N范围1000以内,其实不止,第一次提交无故WA。。回头翻了翻大神题解,改成2000之后就AC了,尼玛,这要是没数据的话都不知道怎么挂的,太恶心了。。
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
vector<int> primes;
primes.push_back(1);
primes.push_back(2);
for (int i = 3; i <= 2000; i += 2)
{
bool is_prime = true;
for (size_t j = 2; j < primes.size() && is_prime; j++)
if (i % primes[j] == 0)
is_prime = false;
if (is_prime)
primes.push_back(i);
}
int N, C;
while (scanf("%d %d", &N, &C) != EOF)
{
printf("%d %d:", N, C);
int n = 0;
while (primes[n] <= N)
n++;
int center = (n - 1) / 2;
if (n & 1)
for (int i = max(center - C + 1, 0);
i <= min(center + C - 1, n - 1); i++)
printf(" %d", primes[i]);
else
for (int i = max(center - C + 1, 0); i <= min(center + C, n - 1);
i++)
printf(" %d", primes[i]);
printf("\n\n");
}
return 0;
}