Problem
【SDOI2017】数字表格
Description
刚刚学习了数列。用表示数列的第项,那么
用老师的超级计算机生成了一个的表格,第行第列的格子中的数是,其中表示的最大公约数。
的表格中共有个数,她想知道这些数的乘积是多少。答案对取模。
Input
有多组测试数据。
第一个一个数,表示数据组数。
接下来行,每行两个数。
Output
Sample Input
1 | 3 |
Sample Output
1 | 1 |
HINT
Source
鸣谢infinityedge
上传
标签:莫比乌斯反演
Solution
转换题目求和的角度为枚举,求对答案的贡献。
那么有
将中间单独分开,设,那么,预处理出的前缀积后数论分块即可。
发现对于每个,最多只会对个的值产生贡献,枚举累加贡献的时间复杂度是调和级数。于是枚举,枚举在内的倍数,将乘到中即可处理出所有。而只能取,于是需要预处理出和即在模意义下的逆元。处理出后再处理的前缀积即可。
时间复杂度。
Code
1 |
|