#P1068. 【UER #13】加密通信
【UER #13】加密通信
前线的排雷蚤已经排出了全部地雷的坐标!现在只需要把这些信息发送给指挥部即可。
为了避免情报外泄,通信过程需要进行加密,为此选取了一个大质数 $p=10^9+7$,并在 $\bmod p$ 意义下定义函数 $ f:\mathbb{N}^+\to \mathbb{Z}_p$ 为积性函数当且仅当:
- $f(1)=1$ 且 $\forall n,m\geq 1$,如果 $\gcd(n,m)=1$ 则 $f(nm)\equiv f(n)f(m)\pmod p$
前线部队把地雷的信息编码成了两个积性函数 $f,g$,并计算出了他们的和 $s=(f+g)\bmod p$,然后把 $s$ 发给了指挥部。
作为通信专家蚤,你现在获取了 $s(1),s(2)\cdots s(n)$ 的值,而你的任务需要还原出一组合法的 $f$ 和 $g$,如果有多组可能的解,你需要输出 $f$ 的字典序最小的一组解。
由于反潜队的干扰,有可能接收到的 $s$ 受到破坏,使得不存在任何一组合法的解,这时你需要输出 $-1$。
- 函数 $f_1$ 字典序小于 $f_2$ 当且仅当存在 $1\leq i\leq n$ 使得 $\forall 1\leq j\leq i-1,f_1(j)=f_2(j)$ 且 $f_1(i) < f_2(i)$。
输入格式
本题有多组测试数据。
第一行输入一个整数 $T$ 表示数据组数。
对于每组数据:
第一行包含一个整数 $n$ 表示需要考虑的积性函数项数。
第二行 $n$ 个非负整数依次表示 $s(1),s(2)……s(n)$。
输出格式
共 $T$ 行,对于每组数据:
如果无解,请输出 $-1$。
否则,设字典序最小的一组解为 $f(1),f(2)……f(n)$,请你输出一行 $n$ 个整数代表 $f(1),f(2)\cdots f(n)$。
2
6
2 1 4 5 1 4
20
2 12 9 11 18 69 20 9 24 102 39 72 12 72 76 21 31 120 24 90
1 0 0 0 0 0
1 3 2 1 10 6 18 0 16 30 0 2 0 54 20 0 0 48 0 10
样例二、三、四
见附件下载,分别符合子任务 $2,7,6$ 的限制。
数据范围
对于所有数据,保证 $n\geq 1,1\leq T\leq \sum n\leq 10^6,\forall 1\leq i\leq n,0\leq s(i)\leq 10^9+6$,存在合理的子任务依赖。
| 子任务编号 | $\sum n \leq $ | 特殊性质 | 分值 |
|---|---|---|---|
| $1$ | $14$ | 无 | $10$ |
| $2$ | $100$ | CD | $10$ |
| $3$ | $1000$ | AD | $8$ |
| $4$ | $1000$ | BD | $16$ |
| $5$ | $10^5$ | A | $8$ |
| $6$ | $10^5$ | B | $16$ |
| $7$ | $10^6$ | C | $12$ |
| $8$ | $10^6$ | 无 | $20$ |
特殊性质 A:保证 $s$ 为两个独立随机生成的合法积性函数的和,这里的随机指在每个素数幂的取值随机生成。
特殊性质 B:保证存在一组合法答案 $(f,g)$ 使得 $\forall 2\leq i\leq n,f(i)\neq g(i)$。
特殊性质 C:保证存在一组合法答案 $(f,g)$ 使得 $f,g$ 都是完全积性函数。
特殊性质 D:保证 $n \geq 20$。
时间限制:$\texttt{1s}$
空间限制:$\texttt{512MB}$