首先,容易证明裴蜀定理可以应用于 3 个及以上的整数间。
所以问题转化为有多少种选数的方案使得选出的数的 gcd=1。
设 f(x) 表示使得选出的数的 gcd=x 的方案数,F(x)=∑x|df(d)。
F(x) 其实就是选出的数都是 x 的倍数的方案数,显然 n 以内 x 的倍数有 ⌊nx⌋ 个。
由于 n∑i=0Cin=2n,有 F(x)=2⌊nx⌋−1。
减一是为了剔除不选的情况。
于是有 f(1)=n∑i=1μ(i)F(i)=n∑i=1μ(i)(2⌊ni⌋−1)
对于指数做数论分块,对于 μ 杜教筛就好了。
我的杜教筛比较偷懒直接上了 unordered_map(
代码:
1 |
|