【51nod 1986 Jason曾不想做的数论题】【数论】

题意

给定 n , m n, m n,m,求 ∏ X ∈ [ 1 , m ] n l c m ( X 1 , ⋯   , X n ) gcd ⁡ ( X 1 , ⋯   , X n ) \prod_{X\in [1,m]^n}\mathrm{lcm}(X_1,\cdots,X_n)^{\gcd(X_1,\cdots,X_n)} X[1,m]nlcm(X1,,Xn)gcd(X1,,Xn)

X ∈ [ 1 , m ] n X\in [1,m]^n X[1,m]n表示 X X X取遍所有长度为 n n n的序列,满足 X i X_i Xi 1 1 1 m m m之间的整数。
n ≤ 1 0 9 , m ≤ 1 0 8 n\le 10^9,m\le 10^8 n109,m108

分析

先考虑这个问题的弱化版:求

S ( m ) = ∏ X ∈ [ 1 , m ] n l c m ( X 1 , ⋯   , X n ) S(m)=\prod_{X\in [1,m]^n}\mathrm{lcm}(X_1,\cdots,X_n) S(m)=X[1,m]nlcm(X1,,Xn)

第一种算法是

S ( m ) = ∏ p ∈ P , p k ≤ m p m n − ( m − ⌊ m p k ⌋ ) n S(m)=\prod_{p\in \mathbb{P},p^k\le m}p^{m^n-(m-\lfloor\frac{m}{p^k}\rfloor)^n} S(m)=pP,pkmpmn(mpkm)n

可以预处理

f ( n ) = { p n = p k , p ∈ P 1 o t h e r w i s e f(n)=\begin{cases} p & n = p^k,p\in \mathbb{P}\\ 1 & otherwise \end{cases} f(n)={ p1n=pk,pPotherwise

的前缀积,然后通过分块 O ( m log ⁡ P ) O(\sqrt m\log P) O(m logP)求出答案。

第二种算法是通过min-max反演得到

l c m ( X 1 , ⋯   , X n ) = ∏ k = 1 n ∏ 1 ≤ y 1 < ⋯ < y k ≤ n gcd ⁡ ( X y 1 , ⋯   , X y k ) ( − 1 ) k − 1 \mathrm{lcm}(X_1,\cdots,X_n)=\prod_{k=1}^n\prod_{1\le y_1<\cdots <y_k\le n}\gcd(X_{y_1},\cdots,X_{y_k})^{(-1)^{k-1}} lcm(X1,,Xn)=k=1n1y1<<ykngcd(Xy1,,Xyk)(1)k1

如果令

g ( p ) = ∑ k = 1 n ∑ 1 ≤ y 1 < ⋯ < y k ≤ n , 1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值