曾经有一次,栋栋问了陵陵这样一个问题:
给定n和m
求 (ΠX∈Slcm(X1,X2,...,Xn)gcd(X1,X2,...,Xn))(ΠX∈Slcm(X1,X2,...,Xn)gcd(X1,X2,...,Xn)) mod 1e9+7
其中X是一个序列,S是所有满足长度为n,且∀1<=i<=n∀1<=i<=n Xi∈[1,m]Xi∈[1,m] 的序列的集合。显然,有m^n种序列。
可是,陵陵看错了题意,一下子就过去了4个月。
于是栋栋又问他的学长jason。
jason是一位天资聪颖而又十分勤奋的学长,做过好多好多的数论题。
jason一看,这题他做过,但是他早就忘记答案是什么了,而且由于做了太多数论题,他已经厌烦了。
于是他打电话给小标,让小标给出答案,然后jason就开始沉迷唱歌。
然而小标因为各种原因需要冬眠一年,又过去了7个月,小标还在冬眠中。
栋栋已经快等的不耐烦了,所以麻烦你给出答案。
需要注意的是,你的空间不能太大。
收起
输入
第一行输入一个整数T(T<12),表示数据组数
接下来T行每行输入两个数n和m(1<=n<=10^9,1<=m)
保证m的总和不超过10^8
输出
输出有T行,每行输出一个数表示答案
输入样例
1
1 3
输出样例
108
题解
方便起见,公式中的区间内只考虑整数,X的gcd,lcm定义为每个元素的gcd,lcm,d|X表示X中元素均为d的倍数
∏X∈[1,m]n(lcmX)gcdX=∏g=1m∏X∈[1,m/g]n(lcmX)g⋅[gcdX=1]=∏g=1m∏X∈[1,m/g]n(g⋅lcmX)g∑d|gcdXμ(d)=∏g=1m∏d=1m/g(∏X∈[1,m/(gd)]n(gd⋅lcmX))g⋅μ(d)=∏t=1m(∏X∈[1,m/t]n(t⋅lcmX))ϕ(t)=∏k(∏X∈[1,k]nlcmX)∑⌊m/t⌋=kϕ(t)⋅(∏⌊m/t⌋=ktϕ(t))kn=∏kFG⋅Hkn∏X∈[1,m]n(lcmX)gcdX=∏g=1m∏X∈[1,m/g]n(lcmX)g⋅[gcdX=1]=∏g=1m∏X∈[1,m/g]n(g⋅lcmX)g∑d|gcdXμ(d)=∏g=1m∏d=1m/g(∏X∈[1,m/(gd)]n(gd⋅lcmX))g⋅μ(d)=∏t=1m(∏X∈[1,m/t]n(t⋅lcmX))ϕ(t)=∏k(∏X∈[1,k]nlcmX)∑⌊m/t⌋=kϕ(t)⋅(∏⌊m/t⌋=ktϕ(t))kn=∏kFG⋅Hkn
线性筛预处理1~m,可以 O(1)O(1) 回答欧拉函数区间和G。
F可以枚举质数算贡献,较小的质数暴力容斥计算lcm中这个质数为每个幂次时的方案数&#x