CF1176D.Recover it!
普及+/提高
通过率:0%
时间限制:4.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Authors guessed an array a consisting of n integers; each integer is not less than 2 and not greater than 2⋅105. You don't know the array a, but you know the array b which is formed from it with the following sequence of operations:
- Firstly, let the array b be equal to the array a;
- Secondly, for each i from 1 to n:
- if ai is a prime number, then one integer pai is appended to array b, where p is an infinite sequence of prime numbers (2,3,5,…);
- otherwise (if ai is not a prime number), the greatest divisor of ai which is not equal to ai is appended to b;
- Then the obtained array of length 2n is shuffled and given to you in the input.
Here pai means the ai-th prime number. The first prime p1=2, the second one is p2=3, and so on.
Your task is to recover any suitable array a that forms the given array b. It is guaranteed that the answer exists (so the array b is obtained from some suitable array a). If there are multiple answers, you can print any.
出题人构造了一个由 n 个整数组成的数组 a;每个整数均不小于 2 且不大于 2⋅105。你并不知道数组 a,但你知道由它通过以下操作生成的数组 b:
- 首先,令数组 b 等于数组 a;
- 其次,对每个 i(从 1 到 n)执行以下操作:
- 若 ai 是质数,则将一个整数 pai 追加到数组 b 的末尾,其中 p 表示质数序列(2,3,5,…);
- 否则(即 ai 不是质数),将 ai 的最大真因子(即不等于 ai 的最大正因子)追加到 b 中;
- 最后,将得到的长度为 2n 的数组随机打乱,并作为输入提供给你。
此处 pai 表示第 ai 个质数:第一个质数 p1=2,第二个质数 p2=3,依此类推。
你的任务是恢复出任意一个满足条件的数组 a,使其能生成给定的数组 b。题目保证答案存在(即给定的数组 b 确实由某个合法的数组 a 生成)。若存在多个解,输出任意一个即可。
输入格式
The first line of the input contains one integer n (1≤n≤2⋅105) — the number of elements in a.
The second line of the input contains 2n integers b1,b2,…,b2n (2≤bi≤2750131), where bi is the i-th element of b. 2750131 is the 199999-th prime number.
输入的第一行包含一个整数 n(1≤n≤2⋅105)—— 表示数组 a 的元素个数。
输入的第二行包含 2n 个整数 b1,b2,…,b2n(2≤bi≤2750131),其中 bi 是数组 b 的第 i 个元素。2750131 是第 199999 个质数。
输出格式
In the only line of the output print n integers a1,a2,…,an (2≤ai≤2⋅105) in any order — the array a from which the array b can be obtained using the sequence of moves given in the problem statement. If there are multiple answers, you can print any.
在输出的唯一一行中,以任意顺序打印 n 个整数 a1,a2,…,an(其中 2≤ai≤2⋅105)——即问题描述中所述操作序列可从该数组 a 得到数组 b。若存在多个答案,输出任意一个即可。
输入输出样例
输入#1
3 3 5 2 3 2 4
输出#1
3 4 2
输入#2
1 2750131 199999
输出#2
199999
输入#3
1 3 6
输出#3
6
输入解题思路,AI测评打分。不知道怎么写?