Logo 邂逅编程之美

UOJ

时间限制:3 s 空间限制:512 MB
统计

下发文件

【题目背景】

要想见证尘封的秘密,就要承受最严厉的惩罚。

【题目描述】

给定正整数 $n$ 和质数 $p$。对于 $\{1, 2,\dots, n\}$ 的一个非空子集 $S$,称 $S$ 是好的, 当 且仅当 $S$ 中元素的最大公约数为 $1$ ,且最小公倍数为 $n$。

求好的集合的个数,答案对 $p$ 取模。

【输入格式】

本题的一个测试点中包含多组测试数据,它们的 $p$ 相同。

第一行两个正整数 $T, p$,表示测试数据组数和模数。

接下来 $T$ 行,每行一个正整数 $n$,表示一组测试数据。

【输出格式】

输出 $T$ 行,每行一个正整数,表示该组测试数据的答案。

【样例 1 输入】

4 998244353
6
60
25200
698377680

【样例 1 输出】

7
3464
343008195
181431013

【样例 1 解释】

对于第一组数据, 好的集合为 $\{1, 2, 3, 6\}, \{2, 3, 6\}, \{2, 3\}, \{1, 3, 6\}, \{1, 6\}, \{1, 2, 6\}$ 和 $\{1, 2, 3\}$,共 7 个。

【样例 2 输入】

20 998244353
18
66
200
30030
355630
795240
3703590
3873270
23423400
39859397
54146162
280619892
918430227
23027612400
55359422200
170576560440
430722790638
484161811172
487231668000
757598055555

【样例 2 输出】

32
193
2852
306800760
301343741
433428976
594912666
306800760
958096256
16625216
306800760
492717383
267114429
173804191
826198479
281595478
492717383
753502088
7467789
249502816

【数据范围】

对于所有测试点: $1 \leq T \leq 3 \times 10^5 , n\leq 10^{18} , p \in [10^8 , 10^9 + 7]$,保证 $n$ 的最大质因 子不超过 $100$。

【提示】

你可以使用 barrett 取模优化加速取模运算,下发文件中提供了一份示例代码。