2021牛客暑期多校训练营 J. Product of GCDs 不动脑子的莫比乌斯反演做法(

Posted 繁凡さん

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021牛客暑期多校训练营 J. Product of GCDs 不动脑子的莫比乌斯反演做法(相关的知识,希望对你有一定的参考价值。

整理的算法模板合集: ACM模板

点我看算法全家桶系列!!!

实际上是一个全新的精炼模板整合计划


Weblink

https://ac.nowcoder.com/acm/contest/11253/J

Problem

t t t 组数据

给定一个集合 S,在 S 中找出元素个数为 k k k 的子集合 T ,计算 T 中所有元素的 gcd ⁡ \\gcd gcd,将所有的 T 得到的 gcd ⁡ \\gcd gcd 乘在一起得到结果,结果对 P 取模。

t ≤ 60 , 1 0 6 ≤ P ≤ 1 0 14 , 1 ≤ x i ≤ 8 ⋅ 1 0 4 , 1 ≤ ∣ S ∣ ≤ 40000 , 1 ≤ k ≤ min ⁡ ( ∣ S ∣ , 30 ) t\\leq 60,10^6\\leq P\\leq 10^{14},1\\leq x_i\\leq 8\\cdot 10^4,1\\leq|S|\\leq 40000,1\\leq k\\leq \\min(|S|,30) t60,106P1014,1xi8104,1S40000,1kmin(S,30)

Solution

统计 gcd ⁡ \\gcd gcd 的乘积,显然无法正面去做,显然考虑从贡献的角度出发,枚举 gcd ⁡ \\gcd gcd,我们只需要计算每个 gcd ⁡ \\gcd gcd 出现多少次,乘起来就是答案。

显然一个集合 T T T gcd ⁡ = d \\gcd=d gcd=d,则集合 T T T 中元素均为 d d d 的倍数,且倍数互质。

因此我们可以倍数法 O ( n log ⁡ n ) O(n\\log n) O(nlogn) 预处理 f [ i ] f[i] f[i] 表示集合 S S S i i i 的倍数的数的个数。

显然从质因子出发容斥计算即可。

不动脑子的莫比乌斯反演做法:

      ∑ d = 1 max ⁡ { x i } d    ∑ T ∈ S [ gcd ⁡ ( T 1 d , T 2 d , ⋯   , T k d ) = 1 ] ( m o d p ) = ∑ d = 1 max ⁡ { x i } d    ∑ T ∈ S ∑ i ∣ gcd ⁡ ( T 1 d , ⋯   , T k d ) μ ( i ) ( m o d p ) = ∑ d = 1 max ⁡ { x i } d    ∑ T ∈ S ∑ i = 1 ⌊ max ⁡ { x i } d ⌋ μ ( i ) [ i ∣ T 1 d ] [ i ∣ T 2 d ] ⋯ [ i ∣ T k d ] ( m o d p ) = ∑ d = 1 max ⁡ { x i } d    ∑ i = 1 ⌊ max ⁡ { x i } d ⌋ μ ( i ) ( f [ i × d ] k ) ( m o d p ) = ∑ d = 1 max ⁡ { x i } d    ∑ i = 1 ⌊ max ⁡ { x i } d ⌋ μ ( i ) ( f [ i × d ] k ) ( m o d φ ( p ) ) ( m o d p ) \\begin{aligned}&\\ \\ \\ \\ \\ \\displaystyle \\sum_{d = 1}^{\\max\\{x_i\\}}d^{\\ \\ \\displaystyle \\sum_{T\\in S}[\\gcd(\\frac {T_1} d,\\frac {T_2} d,\\cdots,\\frac {T_k} d)=1]}\\pmod p&\\\\&=\\displaystyle \\sum_{d = 1}^{\\max\\{x_i\\}}d^{\\ \\ \\displaystyle \\sum_{T\\in S}\\sum_{i\\mid \\gcd(\\frac {T_1} d,\\cdots,\\frac {T_k} d)} \\mu(i) }\\pmod p&\\\\&=\\displaystyle \\sum_{d = 1}^{\\max\\{x_i\\}}d^{\\ \\ \\displaystyle \\sum_{T\\in S}\\sum_{i=1}^{\\left\\lfloor\\frac {\\max\\{x_i\\}} d\\right\\rfloor}\\mu(i) [i\\mid \\frac {T_1} d][i\\mid \\frac {T_2} d]\\cdots [i\\mid \\frac {T_k} d]}\\pmod p&\\\\&=\\displaystyle \\sum_{d = 1}^{\\max\\{x_i\\}}d^{\\ \\ \\displaystyle \\sum_{i=1}^{\\left\\lfloor\\frac {\\max\\{x_i\\}} d\\right\\rfloor}\\mu(i) {f[i\\times d] \\choose k}}\\pmod p&\\\\&=\\displaystyle \\sum_{d = 1}^{\\max\\{x_i\\}}d^{\\ \\ \\displaystyle \\sum_{i=1}^{\\left\\lfloor\\frac {\\max\\{x_i\\}} d\\right\\rfloor}\\mu(i) {f[i\\times d] \\choose k}\\pmod {\\varphi(p)}}\\pmod p\\end{aligned}      d=1max{xi}d  TS[gcd(dT1,dT2,,dTk)=1](modp)=d=1max{xi}d  TSigcd(dT1,,dTk)μ(i)(modp)=d=1max{xi}d  TSi=1dmax{xi}μ(i)[idT1][idT2][i2021牛客暑期多校训练营2——Product of GCDs

2021牛客暑期多校训练营4 G.Product(容斥,模型转化)

2021牛客暑期多校训练营2

2021牛客暑期多校训练营4

2021牛客暑期多校训练营9

2021牛客暑期多校训练营3