Cansult's blog

即使愿望永远无法实现
我也不愿就这样放手

0%

翻车笔记 ABC096D "Five, Five Everywhere" [欧拉筛, 数学, 清奇脑回路]

不会ABC了已经

懵逼的 题目

qwq

扯淡的 题解

当时和Ycrpro看这道题的时候完全是懵逼的啊!

我翻了哥德巴赫猜想, 猜了是否5个素数的和不可能是合数, 算了\(5000\)以内的素数和为合数的情况, 找了\(2, 4, 6\)个素数和的规律

就是没有想到

其实题目名称有点小提示,让这些数的个位是1,5个这样的数加起来一定是5的倍数,也就是合数了。

——from 一个不知名的大佬

[人生重来算了.jpg]

沙茶的 代码

去年的欧拉筛我居然没忘...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <vector>
#define MAXN (100000 + 5)
using namespace std;
bool isp[MAXN];
vector<int> prime;
void init()
{
memset(isp, true, sizeof(isp));
isp[1] = false;
for (int i = 2; i < MAXN; i++)
{
if (isp[i])
prime.push_back(i);
for (int j = 0; j < prime.size() && prime[j] * i < MAXN; j++)
{
isp[i * prime[j]] = false;
if (i % prime[j] == 0)
break;
}
}
}
int main()
{
freopen("in.in", "r", stdin);
init();
int n;
scanf("%d", &n);
int last = 0;
for (int i = 1; i <= n; i++)
{
for (; last < prime.size(); last++)
if (prime[last] % 10 == 1)
{
printf("%d ", prime[last]);
++last;
break;
}
}
return 0;
}

By 大沙茶 Cansult