1986 Jason曾不想做的数论题

博客讲述了栋栋向陵陵和学长Jason提出的一个数论问题,关于给定n和m时,求所有满足特定条件的序列集合的LCM与GCD的乘积模1e9+7的结果。由于Jason做过多的数论题感到厌烦,转而求助于小标,但小标正在冬眠。文章深入解析了求解该问题的数学思路,涉及到欧拉函数、线性筛、质数幂次的方案数计算以及离散对数等相关概念,并给出了高效的算法实现,特别是预处理和询问部分的优化策略。
摘要由CSDN通过智能技术生成

曾经有一次,栋栋问了陵陵这样一个问题:

给定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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值