题目链接:https://codeforces.com/contest/1176/problem/D
题意:给你一个2n个数的数组b,要你求a,其中a是生成b数组的数组。给出生成b的规律:
- 如果ai是素数,那么b中会有素数表中第ai个素数。
- 如果ai是合数,那么b中会有这个数本身以及ai最大的非自己的因数。
要求输出这个a数组。
这个题很有意思,我们先考虑如果ai是素数,那么输出的就是第ai个素数,于是我们首先想到的当然是打一个素数表。
再考虑ai是合数的情况,除了输出自己以外还要输出最大的因数。数据规模太大,不过我们注意到:设x是ai最小的因数,y是最大的因数,那么ai=xy,于是我们还需要额外记录每一个数的最小因数,这样是可以线性筛的。
于是输入b数组,统计每个数字出现的次数,按照合数和质数分别依次输出结果即可。
1 |
|
v1.5.2