CF104021D

进行一个莫比乌斯反的演

大致题意:若一个长度为n的序列,满足gcd为d,且最大的数不超过m,则称其满足条件,若一个序列满足条件,则答案加上(a1a2a3*…)^k,给定n,m,d,k,求答案(mod59964251)

思路:

答案可转化成

再转化成

提出来后,变成

其中gcd==1可变成,即mobius函数

此处运用了,当且仅当n=1,否则为0的性质.即t遍历了gcd的所有约数,若gcd为1,则其和为1,否则为0,与原式一致.

将u(t)作为主体,提到前面,可以得到

再将t^k提到前面来,得到

这样后面关于ai的遍历就变得十分自由,可以发现该式子可以表示成的形式,因为将该式子展开后每一项都表示a序列的一种情况对答案的贡献

最终答案的式子已经得到,但需要注意题目中n的范围极大,而题目中n仅作为幂次出现,故需要进行降幂处理,即对任何数c,都存在:

,故现将n作为字符串读入,再将其降幂存储,其中即为欧拉函数