我采用的是预处理
F(T)=d∣T∑μ2(d)dμ(dT)
然后整除分块的做法(但是我是调和级数暴力搞的),请问在统计答案的时候对于这个数论分块为什么要求1~in
的和啊?
求答案代码如下:
while(T--)
{
cin>>n>>m;
ll ans = 0;
for(ll i = 1,j;i <= min(n,m);i = j + 1)
{
j = min(n / (n / i),m / (m / i));
ans = (ans + S(n / i) * S(m / i) % MOD * (pre[j] - pre[i - 1] + MOD) % MOD) % MOD;
}
cout<<ans<<endl;
}
预处理代码如下:
for(int i = 1;i <= N - 1;i++)
for(int j = i,t = 1;j <= N - 1;j += i,t++)
pre[j] = (pre[j] + miu[i] * miu[i] * i * miu[t] + MOD) % MOD;
for(int i = 2;i <= N - 1;i++)
pre[i] = (pre[i - 1] + i * i % MOD * pre[i] % MOD) % MOD;