题目大意
令
f(n)=∑ni=1∑nj=1 [ gcd(i,j)+lcm(i,j)≥n ]
,求
S(n)=∑ni=1f(i)
。
多组询问,T<=1e5,n<=1e6。
第一反应
拿到式子大多数同学开始反演了。。。
T 这么大,还得能预处理。。。
直接刚反演的话,我反正是刚不出来,题解也不是这么做的。
题解
考虑递推!!
看
f(n−1)
如何推到
f(n)
。我们发现,就是少了
i=n
或
j=n
的情况,然后多了
gcd+lcm=n−1
的情况。当
i=n
或
j=n
时,
lcm(i,j)≥n
,所以一定可以。因此递推式就是:
f(n)=f(n−1)+2n−1−∑i=1n−1∑j=1n−1 [ gcd(i,j)+lcm(i,j)=n−1 ]
后面那部分就可以反演了。
g(n)h(m)======∑i=1n∑j=1n [ gcd(i,j)+lcm(i,j)=n ]∑d=1n∑i=1⌊nd⌋∑j=1⌊nd⌋ [ gcd(i,j)=1 ] [ d+ijd=n ]∑d|n∑i=1⌊nd⌋−1∑j=1⌊nd⌋−1 [ gcd(i,j)=1 ] [ ij=⌊nd⌋−1 ]∑d|nh(⌊nd⌋−1)∑i=1m∑j=1m [ gcd(i,j)=1 ] [ ij=m ]2λ(m)
其中 λ(m) 表示 m 的质因数种类数,即
到这一步,全部都可以预处理了。