[hdu6868]Absolute Math(推式子+莫比乌斯反演)

题目链接

题意:

f ( n ) = ∑ d ∣ n ∣ μ ( d ) ∣ f(n)=\sum_{d|n}|\mu (d)| f(n)=dnμ(d) T T T组询问,每组给定一个 n n n m m m,求 ∑ i = 1 m f ( n i ) \sum_{i=1}^{m}f(ni) i=1mf(ni)
( 1 ≤ T ≤ 1 0 4 , 1 ≤ n , m ≤ 1 0 7 ) (1\leq T\leq 10^{4},1\leq n,m\leq 10^{7}) (1T104,1n,m107)

推导:

首先根据莫比乌斯函数 μ ( n ) \mu (n) μ(n)的定义式可以知道,当 n n n存在平方因子时, ∣ μ ( n ) ∣ = 0 |\mu (n)|=0 μ(n)=0,否则 ∣ μ ( n ) ∣ = 1 |\mu (n)|=1 μ(n)=1

所以 f ( n ) f(n) f(n)表示的是 n n n的因子中,不存在平方因子的因子个数。

我们将 n n n的质因子全部找出来,因为不能有平方因子,所以每个质因子的次数要么为 0 0 0,要么为 1 1 1。就得到了 f ( n ) = 2 w ( n ) f(n)=2^{w(n)} f(n)=2w(n),其中 w ( n ) w(n) w(n)表示 n n n有多少个不同的质因子。

根据上面推出来的式子,可以发现 f ( a b ) = f ( a ) f ( b ) f ( g c d ( a , b ) ) = 2 w ( a ) + w ( b ) − w ( g c d ( a , b ) ) f(ab)=\frac{f(a)f(b)}{f(gcd(a,b))}=2^{w(a)+w(b)-w(gcd(a,b))} f(ab)=f(gcd(a,b))f(a)f(b)=2w(a)+w(b)w(gcd(a,b))

弄出了 g c d gcd gcd之后,我们考虑莫比乌斯反演,就要先把 g c d gcd gcd提出来,原式就变成。
∑ i = 1 m f ( n i ) = ∑ g = 1 m i n ( n , m ) 2 − w ( g ) ∑ i = 1 m 2 w ( n ) + w ( i ) [ g = g c d ( n , i ) ] \sum_{i=1}^{m}f(ni)=\sum_{g=1}^{min(n,m)}2^{-w(g)}\sum_{i=1}^{m}2^{w(n)+w(i)}[g=gcd(n,i)] i=1mf(ni)=g=1min(n,m)2w(g)i=1m2w(n)+w(i)[g=gcd(n,i)]

现在开始莫比乌斯反演,令 y ( g ) = ∑ i = 1 m 2 w ( n ) + w ( i ) [ g = g c d ( n , i ) ] y(g)=\sum_{i=1}^{m}2^{w(n)+w(i)}[g=gcd(n,i)] y(g)=i=1m2w(n)+w(i)[g=gcd(n,i)]

然后令 Y ( d ) = ∑ d ∣ g y ( g ) Y(d)=\sum_{d|g}y(g) Y(d)=dgy(g),即,
Y ( d ) = ∑ d ∣ g ∑ i = 1 m 2 w ( n ) + w ( i ) [ g = g c d ( n , i ) ] = ∑ i = 1 m ∑ d ∣ n ∑ d ∣ i 2 w ( n ) + w ( i ) Y(d)=\sum_{d|g}\sum_{i=1}^{m}2^{w(n)+w(i)}[g=gcd(n,i)]=\sum_{i=1}^{m}\sum_{d|n}\sum_{d|i}2^{w(n)+w(i)} Y(d)=dgi=1m2w(n)+w(i)[g=gcd(n,i)]=i=1mdndi2w(n)+w(i)

则有 y ( g ) = ∑ g ∣ d μ ( d / g ) Y ( d ) y(g)=\sum_{g|d}\mu (d/g)Y(d) y(g)=gdμ(d/g)Y(d)

原式就变成了,
∑ g = 1 m i n ( n , m ) y ( g ) = ∑ g = 1 m i n ( n , m ) 2 − w ( g ) ∑ g ∣ d μ ( d / g ) ∑ d ∣ n ∑ i = 1 m ∑ d ∣ i 2 w ( n ) + w ( i ) = 2 w ( n ) ∑ i = 1 m 2 w ( i ) ∑ d ∣ n ∑ d ∣ i ∑ g ∣ d 2 − w ( g ) μ ( d / g ) \sum_{g=1}^{min(n,m)}y(g)=\sum_{g=1}^{min(n,m)}2^{-w(g)}\sum_{g|d}\mu(d/g)\sum_{d|n}\sum_{i=1}^{m}\sum_{d|i}2^{w(n)+w(i)}=2^{w(n)}\sum_{i=1}^{m}2^{w(i)}\sum_{d|n}\sum_{d|i}\sum_{g|d}2^{-w(g)}\mu(d/g) g=1min(n,m)y(g)=g=1min(n,m)2w(g)gdμ(d/g)dni=1mdi2w(n)+w(i)=2w(n)i=1m2w(i)dndigd2w(g)μ(d/g)
我们令 G ( d ) = ∑ g ∣ d 2 − w ( g ) μ ( d / g ) G(d)=\sum_{g|d}2^{-w(g)}\mu(d/g) G(d)=gd2w(g)μ(d/g),可以 o ( n l o g n ) o(nlogn) o(nlogn)预处理这个函数,然后接着化式子。
A N S = 2 w ( n ) ∑ i = 1 m 2 w ( i ) ∑ d ∣ n ∑ d ∣ i G ( d ) = 2 w ( n ) ∑ d ∣ n G ( d ) ∑ i = 1 m ∑ d ∣ i 2 w ( i ) = 2 w ( n ) ∑ d ∣ n G ( d ) ∑ i = 1 ⌊ m d ⌋ 2 w ( i d ) ANS=2^{w(n)}\sum_{i=1}^{m}2^{w(i)}\sum_{d|n}\sum_{d|i}G(d)=2^{w(n)}\sum_{d|n}G(d)\sum_{i=1}^{m}\sum_{d|i}2^{w(i)}=2^{w(n)}\sum_{d|n}G(d)\sum_{i=1}^{\lfloor \frac{m}{d} \rfloor}2^{w(id)} ANS=2w(n)i=1m2w(i)dndiG(d)=2w(n)dnG(d)i=1mdi2w(i)=2w(n)dnG(d)i=1dm2w(id)

代码:

在这里插入代码片

你可能感兴趣的:(莫比乌斯反演)