我们先对条件进行一下变形
\(m \% k+n\%k\ge k\rightarrow m-k*\lfloor\frac{m}{k}\rfloor+n-k*\lfloor\frac{n}{k}\rfloor\ge k\)
两边同时整除一个k
\(\frac{m+n}{k}-\lfloor\frac{m}{k}\rfloor-\lfloor\frac{n}{k}\rfloor\ge1\)
因为\(\lfloor\frac{m}{k}\rfloor和\lfloor\frac{n}{k}\rfloor\)都为整数,且不等式的右边也为整数
所以可以写成
\(\lfloor\frac{m+n}{k}\rfloor-\lfloor\frac{m}{k}\rfloor-\lfloor\frac{n}{k}\rfloor\ge1\)
然而我们知道,只针对于\(\lfloor\frac{m+n}{k}\rfloor-\lfloor\frac{m}{k}\rfloor-\lfloor\frac{n}{k}\rfloor\)这个式子
他的范围是很好求的
\(0\le\lfloor\frac{m+n}{k}\rfloor-\lfloor\frac{m}{k}\rfloor-\lfloor\frac{n}{k}\rfloor\le1\)
且\(\lfloor\frac{m+n}{k}\rfloor-\lfloor\frac{m}{k}\rfloor-\lfloor\frac{n}{k}\rfloor\)本身即为整数
所以
\(\lfloor\frac{m+n}{k}\rfloor-\lfloor\frac{m}{k}\rfloor-\lfloor\frac{n}{k}\rfloor=1\)
且
\(1\le k \le n+m\)
所以
\(\begin{aligned}\sum_{i\in S(m,m)}\varphi(i)&=\sum_{i=1}^{n+m}((\lfloor\frac{m+n}{i}\rfloor-\lfloor\frac{m}{i}\rfloor-\lfloor\frac{n}{i}\rfloor)*\varphi(i))\\&=\sum_{i=1}^{n+m}(\lfloor\frac{m+n}{i}\rfloor*\varphi(i))-\sum_{i=1}^{n+m}(\lfloor\frac{m}{i}\rfloor*\varphi(i))-\sum_{i=1}^{n+m}(\lfloor\frac{n}{i}\rfloor*\varphi(i))\end{aligned}\)
之后我们注意到当\(i\ge n\)时\(\lfloor\frac{n}{i}\rfloor=0\)
所以最终的等式即为
\(\sum_{i=1}^{n+m}(\lfloor\frac{m+n}{i}\rfloor*\varphi(i))-\sum_{i=1}^{m}(\lfloor\frac{m}{i}\rfloor*\varphi(i))-\sum_{i=1}^{n}(\lfloor\frac{n}{i}\rfloor*\varphi(i))\)
同时
\(\begin{aligned}\sum_{d=1}^{n}(\varphi(d)*\lfloor\frac{n}{d}\rfloor)&=\sum_{i=1}^{n}\sum_{d|i}^{i}\varphi(d)\\&=\sum_{i=1}^{n}i\\&=\frac{n*(1+n)}{2}\\&=\frac{n}{2}+\frac{n^2}{2}\end{aligned}\)
所以
原式= \(\frac{n+m}{2}+\frac{n^2+2*n*m+m^2}{2}-\frac{n}{2}-\frac{n^2}{2}-\frac{m}{2}-\frac{m^2}{2}=n*m\)
所以答案即为\(\varphi(n)*\varphi(m)*n*m\)
#include<iostream>
using namespace std;
const int mod=998244353;
long long phi(long long x)
{
long long ans=x;
for(long long i=2;i*i<=x;i++)
{
if(x%i==0)
{
ans-=ans/i;
while(!(x%i))
{
x/=i;
}
}
}
if(x>1)
{
ans-=ans/x;
}
return ans%mod;
}
long long n,m;
long long ans;
int main()
{
cin>>n>>m;
ans=phi(n)*phi(m)%mod;
n%=mod;
m%=mod;
ans=ans*n%mod*m%mod;
cout<<ans;
return 0;
}
原文:https://www.cnblogs.com/loney-s/p/12234642.html