#P12583. [集训队互测 2024day16]积性函数

[集训队互测 2024day16]积性函数

给定正整数 n,Pn,P 和长为 nn 的数列 a1na_{1\cdots n},判断是否存在积性函数 f(x)f(x) 同时满足:

  • f(x)f(x) 的定义域和陪域均为正整数集。
  • f(x)f(x) 在其定义域上非严格单调递增。
  • x[1,n],f(x)modP=ax\forall x\in [1,n], f(x)\bmod P = a_x

输入格式

本题有多组测试数据。

第一行两个正整数 T,IDT,ID,分别表示数据组数和当前测试点所在的测试包编号。特别地,样例中 ID=0ID=0

接下来依次输入每组测试数据,对于每组测试数据:

第一行两个正整数 n,Pn,P,意义如题。

第二行 nn 个非负整数,第 ii 个表示 aia_i,意义如题。


请注意,本题部分测试点读入量较大,故下发了附加文件中的 fastread.cpp 作为快速读入模板。

使用时只需将模板粘贴至代码中,调用 read() 时会从标准输入流中读入一个整数并返回,切勿将其与其它输入方式混用。保证标准算法的读入部分使用此模板实现。

若你仍然不理解如何使用此模板,可以查看附加文件中的 sample.cpp,其中给出了一种示例实现,补全此代码即可。

输出格式

对于每组测试数据输出一行,若存在合法的 f(x)f(x) 则输出 YES,否则输出 NO

请注意需要全部使用半角英文大写字母。

样例一

样例一输入

3 0
3 5
1 4 4
4 2023
1 2 2 2
5 2023
1 2 10 11 12

样例一输出

YES
NO
NO

样例一解释

本测试点包含三组测试数据。

对于第一组测试数据,取 f(x)=x2f(x)=x^2,可以验证 f(x)f(x) 是合法的非严格单调递增的积性函数,符合题意。同时 $f(1)\bmod 5={\color{red}1},f(2)\bmod 5={\color{red}4},f(3)\bmod 5 = 9\bmod 5={\color{red}4}$ 符合要求。

对于第二组测试数据,可以证明不存在合法的 f(x)f(x)。比如,若 f(1)=1,f(2)=f(3)=f(4)=2f(1)=1,f(2)=f(3)=f(4)=2,则可以得到 f(6)=f(12)=4f(6)=f(12)=4,故 f(7)=f(10)=4,f(5)=2f(7)=f(10)=4,f(5)=2,于是 ${\color{red}f(15)}=f(3)f(5)=4\ {\color{red}<f(14)}=f(2)f(7)=8$,这构成了矛盾。

对于第三组测试数据,同样可以证明不存在合法的 f(x)f(x)。比如,若 f(1)=1,f(2)=2,f(3)=10,f(4)=11,f(5)=12f(1)=1,f(2)=2,f(3)=10,f(4)=11,f(5)=12,则可以证明 f(6)=20f(7)f(10)=24f(6)=20\le f(7)\le f(10)=24,而 $f(12)=110,f(14)\le 24\times 2=48,{\color{red}f(14)<f(12)}$,矛盾。

限于篇幅,无法于题面中对后两组测试数据中 f(x)f(x) 的不存在性给出完整证明。

数据规模与约定

对于 100%100\% 的数据,1T20,1n<P5×106,0ai<P1\leq T\leq 20,1\le n<P\le 5\times 10^6,0\le a_i<P

保证每个数据点中的 n,P107\sum n,\sum P\le 10^7

本题使用捆绑测试,且评测时会按照各测试包特殊限制的逻辑关系绑定依赖。

各测试包的分值和特殊限制如下:

测试包编号 n,Pn,P\le n,P\sum n,\sum P\le 保证 PP 是质数 特殊性质 分值
11 10310^3 2×1042\times 10^4 a1=0a_1=0 22
22 i[1,n],ai=1\forall i\in [1,n], a_i=1 33
33 D 44
44 1010 5050 A 1212
55 10310^3 2×1042\times 10^4 1313
66 B 77
77 3×1053\times 10^5 6×1056\times 10^5 55
88 10310^3 2×1042\times 10^4 C 1414
99 3×1053\times 10^5 6×1056\times 10^5 n=P1n=P-1 99
1010 PP 是奇数 88
1111 无特殊性质 1515
1212 10610^6 2×1062\times 10^6 22
1313 5×1065\times 10^6 10710^7 66

特殊性质 A:保证如果存在合法的 f(x)f(x),则存在合法 f(x)f(x) 为严格单调递增的完全积性函数且满足 xn,f(x)<P\forall x\le n,f(x)<P

特殊性质 B:保证如果存在合法的 f(x)f(x),则存在合法 f(x)f(x) 为严格单调递增的完全积性函数。

特殊性质 C:保证如果存在合法的 f(x)f(x),则存在合法 f(x)f(x) 严格单调递增。

特殊性质 D:保证 n=500n=500,且每个 aia_i[0,P)[0,P) 内独立地均匀随机生成。同时保证该测试包内恰有 33 个测试点。