Subtask 1
1-3
19**x mod 998244353。
4
19**x mod ?。发现模数大概率是 1e6~2e6(输出没有超过 1.5e6 的),暴力跑。
5
19**x mod ?。利用正则表达式找到了两个四位数的输入,用 py 暴力得到了 $19^a$ 和 $19^b$,因为有了结果 $x, y$,可以确定模数为 $\gcd(19^a-x, 19^b-y)$ 的某个因数。然后发现这个 $\gcd$ 是质数,所以模数就是它。
6
看起来像是 19**x mod 998244353,但是名字带个 wa。看看输出发现有负数,大概是溢出了。再结合提示里关于 int 溢出的信息,可以推测是暴力乘/快速幂用 int
忘了乘上 1ll。利用 py 验证,发现前者符合结果。
7
输入变大了。显然,只要一个数出现了两次,之后就一直会循环。如果循环节不大就解决了。所以考虑求一下循环(行不通的话去试其它的)。
通过 map
暴力得到了循环节为 55245 + 45699k。
Subtask 2
8-10
给一个长度不超过 $10^6$ 的区间,判断区间每个数是否为质数。直接上 MR。
这里我在卡常上花了很长时间,然后意识到判掉 $2, 3, 5$ 的倍数就行了。
11
2u,并且输出是 0+-
,一眼是莫比乌斯函数。$10^6$ 可以直接线性筛。
12-13
同样是 2u,数变大了不能筛了。考虑除掉每个 $10^6$ 以下的质数,那么之后一个数必不可能含有三个质因子。先 MR 确定是否一个质因子,否则若为平方数(开根号即可确定)则 mu=0,否则 mu 不需要改动(乘两个 -1)。
14
g?原根?#验证一下
暴力判定试试。能过。
15
原根,但是这个模数是一堆质数乘起来,判起来会很慢,根本过不了。考虑先暴力出最小原根 $g$,之后所有原根一定形如 $g^p \bmod m$,其中 $\gcd(p, \varphi(m)) = 1$。
16
考虑枚举每个数是否可能为模数。第一遍筛选的时候,只检查前 50 项,以得到较快的速度(大约 0.5h 跑完);第二遍筛选的时候,我取了前 369 项(保证正确性),只得到了一个模数:1515343657。之后就可以做了。