首先由这样一个式子:\( 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. T2627 村村通 codevs

    http://codevs.cn/problem/2627/  时间限制: 1 s  空间限制: 32000 KB  题目等级 : 黄金 Gold 题目描述 Description 农民约翰被选为他们 ...

  2. FDMemTable的详细使用方法

    unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Var ...

  3. [Bash] View Files and Folders in Bash

    Sometimes when working at the command line, it can be handy to view a file’s contents right in the t ...

  4. Dom对象的经常用法

    Dom对象的经常用法: (1)getElementById() 查询给定ID属性值的元素,返回该元素的元素节点 1.  查询给定ID属性值的元素,返回该元素的元素节点.也称为元素对象.        ...

  5. COCOS2DX学习之Box2d物理引擎使用之------动态物体的创建

    1.创建一个物理世界 首先要引入一个头文件#include "Box2D\Box2D.h" 之后利用b2word创建一个对象,而且指定这个物理世界中的加速度方向. word = n ...

  6. iOS用户体验之-modal上下文

    iOS用户体验之-modal上下文 何为模态视图,它的作用时聚焦当前.获得用户的注意,用户仅仅有完毕模态的任务才 退出模态视图.否则你将不能运行app的任务,比如,alert view,model v ...

  7. C#结构类型图

    C#结构类型图     分类: C#

  8. 项目实战之玩转div+css制作自己定义形状

    项目需求 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/diss ...

  9. leetcode——Implement strStr() 实现字符串匹配函数(AC)

    Implement strStr(). Returns a pointer to the first occurrence of needle in haystack, or null if need ...

  10. OFbiz实体引擎

    安全可靠的数据存储是数据管理战略的关键业务,OFbiz认真对待数据管理.不把全部繁琐和easy出错的数据管理任务留给应用开发人员.OFbiz在设计和实现阶段非常好的贯彻了这个理念. 实体引擎是数据库无 ...