首先由这样一个式子:\( d(ij)=\sum_{p|i}\sum_{q|j}[gcd(p,q)==1]\frac{pj}{q} \)大概感性证明一下吧我不会证

然后开始推:

\[\sum_{i=1}^{n}\sum_{j=1}^{n}\sum_{p|i}\sum_{q|j}[gcd(p,q)==1]\frac{pj}{q}
\]

\[\sum_{p=1}^{n}\sum_{q=1}^{n}[gcd(p,q)==1]\sum_{p|i}\sum_{q|j}\frac{pj}{q}
\]

\[\sum_{p=1}^{n}p\sum_{q=1}^{n}[gcd(p,q)==1]\left \lfloor \frac{n}{p} \right \rfloor\sum_{j=1}^{\left \lfloor \frac{n}{q} \right \rfloor}j
\]

方便起见设\( f(n)=\sum_{i=1}^{n}i \)

\[\sum_{p=1}^{n}p\sum_{q=1}^{n}\sum_{k|p,k|q}\mu(k)\left \lfloor \frac{n}{p} \right \rfloor f(\left \lfloor \frac{n}{q} \right \rfloor)
\]

\[\sum_{k=1}^{n}\mu(k)\sum_{k|p}p\left \lfloor \frac{n}{p} \right \rfloor\sum_{k|q}f(\left \lfloor \frac{n}{q} \right \rfloor)
\]

\[\sum_{k=1}^{n}\mu(k)\sum_{i=1}^{\left \lfloor \frac{n}{k} \right \rfloor}ik\left \lfloor \frac{n}{ik} \right \rfloor\sum_{j=1}^{\left \lfloor \frac{n}{k} \right \rfloor}f(\left \lfloor \frac{n}{jk} \right \rfloor)
\]

\[\sum_{k=1}^{n}\mu(k)k\sum_{i=1}^{\left \lfloor \frac{n}{k} \right \rfloor}i\left \lfloor \frac{n}{ik} \right \rfloor\sum_{j=1}^{\left \lfloor \frac{n}{k} \right \rfloor}f(\left \lfloor \frac{n}{jk} \right \rfloor)
\]

这个样子显然可以用杜教筛了,但是注意到后面有两个求和式,可能会增大常数(但是也不会T啦),所以考虑这两个求和式的关系:

\[\sum_{i=1}^{n}f(\left \lfloor \frac{n}{i} \right \rfloor)
\]

\[=\sum_{i=1}^{n}\sum_{j=1}^{\left \lfloor \frac{n}{i} \right \rfloor}j
\]

\[=\sum_{i=1}^{n}\sum_{j=1}^{\left \lfloor \frac{n}{i} \right \rfloor}j
\]

\[=\sum_{j=1}^{n}j\left \lfloor \frac{n}{j} \right \rfloor
\]

所以这两个式子是一样的!于是就变成了:

\[\sum_{k=1}^{n}\mu(k)k(\sum_{j=1}^{\left \lfloor \frac{n}{k} \right \rfloor}f(\left \lfloor \frac{n}{jk} \right \rfloor))^2
\]

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
const int N=1000005,inv2=500000004,mod=1e9+7;
int m,mb[N],q[N],tot;
long long n,s[N],ans,ha[N];
bool v[N];
long long slv(long long n)
{
return n*(n+1)%mod*inv2%mod;
}
long long wk(long long x)
{
if(x<=m)
return s[x];//cout<<x<<endl;
if(ha[n/x])
return ha[n/x];
long long re=1ll;
for(int i=2,la;i<=x;i=la+1)
{
la=x/(x/i);
re=(re-(slv(la)-slv(i-1))*wk(x/i)%mod)%mod;
}
return ha[n/x]=re;
}
long long clc(long long n)
{
long long re=0ll;
for(int i=1,la;i<=n;i=la+1)
{
la=n/(n/i);
re=(re+(la-i+1)*slv(n/i)%mod)%mod;
}
return re;
}
int main()
{
scanf("%lld",&n);
m=(int)ceil(pow((int)n,2.0/3));
mb[1]=1;
for(int i=2;i<=m;i++)
{
if(!v[i])
{
q[++tot]=i;
mb[i]=-1;
}
for(int j=1;j<=tot&&q[j]*i<=m;j++)
{
int k=i*q[j];
v[k]=1;
if(i%q[j]==0)
{
mb[k]=0;
break;
}
mb[k]=-mb[i];
}
}
for(int i=1;i<=m;i++)
s[i]=(s[i-1]+i*mb[i])%mod;
//cout<<wk(102)<<" "<<wk(101)<<endl;
for(int i=1,la;i<=n;i=la+1)
{
la=n/(n/i);
long long ml=clc(n/i);//if(i!=1)cout<<i-1<<" "<<n/(i-1)<<endl<<la<<" "<<n/la<<endl;
ans=(ans+(wk(la)-wk(i-1))*ml%mod*ml%mod)%mod;
}
printf("%lld",(ans%mod+mod)%mod);
return 0;
}

51nod 1220 约数之和【莫比乌斯反演+杜教筛】的更多相关文章

  1. 51NOD 1222 最小公倍数计数 [莫比乌斯反演 杜教筛]

    1222 最小公倍数计数 题意:求有多少数对\((a,b):a<b\)满足\(lcm(a,b) \in [1, n]\) \(n \le 10^{11}\) 卡内存! 枚举\(gcd, \fra ...

  2. [复习]莫比乌斯反演,杜教筛,min_25筛

    [复习]莫比乌斯反演,杜教筛,min_25筛 莫比乌斯反演 做题的时候的常用形式: \[\begin{aligned}g(n)&=\sum_{n|d}f(d)\\f(n)&=\sum_ ...

  3. 【bzoj3930】[CQOI2015]选数 莫比乌斯反演+杜教筛

    题目描述 我们知道,从区间[L,H](L和H为整数)中选取N个整数,总共有(H-L+1)^N种方案.小z很好奇这样选出的数的最大公约数的规律,他决定对每种方案选出的N个整数都求一次最大公约数,以便进一 ...

  4. [BZOJ 3930] [CQOI 2015]选数(莫比乌斯反演+杜教筛)

    [BZOJ 3930] [CQOI 2015]选数(莫比乌斯反演+杜教筛) 题面 我们知道,从区间\([L,R]\)(L和R为整数)中选取N个整数,总共有\((R-L+1)^N\)种方案.求最大公约数 ...

  5. 51nod 1237 最大公约数之和 V3【欧拉函数||莫比乌斯反演+杜教筛】

    用mu写lcm那道卡常卡成狗(然而最后也没卡过去,于是写一下gcd冷静一下 首先推一下式子 \[ \sum_{i=1}^{n}\sum_{j=1}^{n}gcd(i,j) \] \[ \sum_{i= ...

  6. 51Nod.1237.最大公约数之和 V3(莫比乌斯反演 杜教筛 欧拉函数)

    题目链接 \(Description\) \(n\leq 10^{10}\),求 \[\sum_{i=1}^n\sum_{j=1}^ngcd(i,j)\ mod\ (1e9+7)\] \(Soluti ...

  7. 牛客练习赛84F-牛客推荐系统开发之下班【莫比乌斯反演,杜教筛】

    正题 题目链接:https://ac.nowcoder.com/acm/contest/11174/F 题目大意 给出\(n,k\)求 \[\sum_{i_1=1}^n\sum_{i_2=1}^n.. ...

  8. 【bzoj4176】Lucas的数论 莫比乌斯反演+杜教筛

    Description 去年的Lucas非常喜欢数论题,但是一年以后的Lucas却不那么喜欢了. 在整理以前的试题时,发现了这样一道题目"求Sigma(f(i)),其中1<=i< ...

  9. 【CCPC-Wannafly Winter Camp Day3 (Div1) F】小清新数论(莫比乌斯反演+杜教筛)

    点此看题面 大致题意: 让你求出\(\sum_{i=1}^n\sum_{j=1}^n\mu(gcd(i,j))\). 莫比乌斯反演 这种题目,一看就是莫比乌斯反演啊!(连莫比乌斯函数都有) 关于莫比乌 ...

随机推荐

  1. Minimum Spanning Tree.prim/kruskal(并查集)

    开始了最小生成树,以简单应用为例hoj1323,1232(求连通分支数,直接并查集即可) prim(n*n) 一般用于稠密图,而Kruskal(m*log(m))用于系稀疏图 #include< ...

  2. python学习之-- redis模块操作 HASH

    redis 操作 之 -Hash Hash 操作:hash在内存中的存储格式 name hash n1 ------> k1 -> v1 k2 -> v2 k3 -> v3hs ...

  3. 简论远程通信(RPC,Webservice,RMI,JMS的区别)

    RPC(Remote Procedure Call Protocol)RPC使用C/S方式,采用http协议,发送请求到服务器,等待服务器返回结果.这个请求包括一个参数集和一个文本集,通常形成“cla ...

  4. ABP每次生成前都执行bundle设置

    ABP项目每次编译mvc项目时都会执行bundle,比较耗时. 可以在项目文件(*.csproj)中发现设置了每前生成前执行的命令 <Target Name="PreBuild&quo ...

  5. topcoder srm 550

    div1 250pt: 题意:有个机器人,从某一点出发,他只有碰到地形边缘或者碰到走过的点时才会改变运动方向,然后接着走,现在给出他的运动轨迹,判断他的运动是否合法,如果合法的话,那么整个地形的最小面 ...

  6. pip 安装速度慢解决办法

    https://blog.csdn.net/liujingclan/article/details/50176597 https://blog.csdn.net/rytyy/article/detai ...

  7. js可视区域图片懒加载

    可视区域图片懒加载 实现原理,页面滚动时获取需要懒加载的图片,判断此图片是否在可视区域内,是则设置图片data-src地址为src地址,加载图片. html下载地址 <!DOCTYPE html ...

  8. Cocos2dx 小技巧(十三)聊聊坐标系

    一好友考上了空姐.她说:以后基本上不会回来了.等下次见面时请叫我白富美!尽管有点羡慕.但我依然不甘示弱回复:下次见面时请叫我高富帅! 未来,谁说得准呢? ------------------有段时间没 ...

  9. HDU1024 Max Sum Plus Plus —— DP + 滚动数组

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1024 Max Sum Plus Plus Time Limit: 2000/1000 MS ...

  10. git不同分支局部代码合并 git cherry-pick

    cherry-pick 可以局部代码合并. cherry-pick不仅可以用在不同分支之间,还可以用在同一个分支上. 比如说你在某一个向某个分支中添加了一个功能,后来处于某种原因把它给删除了,然而后来 ...