51nod 1220 约数之和【莫比乌斯反演+杜教筛】

时间:2022-08-31 23:54:01

首先由这样一个式子:\( 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&&num;160&semi;最小公倍数计数 &lbrack;莫比乌斯反演 杜教筛&rsqb;

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

  2. &lbrack;复习&rsqb;莫比乌斯反演&comma;杜教筛&comma;min&lowbar;25筛

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

  3. 【bzoj3930】&lbrack;CQOI2015&rsqb;选数 莫比乌斯反演&plus;杜教筛

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

  4. &lbrack;BZOJ 3930&rsqb; &lbrack;CQOI 2015&rsqb;选数&lpar;莫比乌斯反演&plus;杜教筛&rpar;

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

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

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

  6. 51Nod&period;1237&period;最大公约数之和 V3&lpar;莫比乌斯反演 杜教筛 欧拉函数&rpar;

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

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

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

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

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

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

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

随机推荐

  1. mysql权限管理

    经常遇到有网友在QQ群或者论坛上问关于mysql权限的问题,今天抽空总结一下关于这几年使用MYSQL的时候关于MYSQL数据库的权限管理的经验,也希望能对使用mysql的网友有所帮助! 一.MYSQL ...

  2. C struct结构体内存对齐问题

    在空间看到别人的疑问引起了我的兴趣,刚好是我感兴趣的话题,就写一下.为了别人的疑问,也发表在qq空间里.因为下班比较晚,10点才到家,发表的也晚.其实是个简单的问题.  直接用实例和内存图说明: #i ...

  3. hibnate 创建表的时候type&equals;innodb报错

    这个原因是在MYSQL5.5及以后版本中type=InnoDB 由ENGINE=InnoDB  代替. 解决办法,自己定义一个方言: package com.hotusm.dialect; /** * ...

  4. AngularJS&plus;ASP&period;NET MVC&plus;SignalR实现消息推送

    原文:AngularJS+ASP.NET MVC+SignalR实现消息推送 背景 OA管理系统中,员工提交申请单,消息实时通知到相关人员及时进行审批,审批之后将结果推送给用户. 技术选择 最开始发现 ...

  5. ie6的png24问题

    解决IE6的PNG透明JS插件 DD_belatedPNG 引:http://www.cnblogs.com/cobby/archive/2012/05/11/2495801.html IE6的PNG ...

  6. Spring Cache简单介绍和使用

    Spring Cache 缓存是实际工作中非经常常使用的一种提高性能的方法, 我们会在很多场景下来使用缓存. 本文通过一个简单的样例进行展开,通过对照我们原来的自己定义缓存和 spring 的基于凝视 ...

  7. Java遍历时删除List、Set、Map中的元素(源码分析)

    在对List.Set.Map执行遍历删除或添加等改变集合个数的操作时,不能使用普通的while.for循环或增强for.会抛出ConcurrentModificationException异常或者没有 ...

  8. nexus 数据库备份任务webhook 通知

    nexus 的数据库备份是比较重要的,可以方便我们在故障的是时候进行应用恢复. 以下使用benthos 组件进行nexus 数据库备份事件的应用通知处理 环境准备 使用docker-compose 运 ...

  9. C&num;使用Emit生成构造函数和属性

    假设我们需要一个名叫Kitty的类,其在Pets程序集下. 1 // specify a new assembly name 2 var assemblyName = new AssemblyName ...

  10. sencha touch 入门学习资料大全&lpar;2015-12-30&rpar;

    现在sencha touch已经更新到2.4.2版本了 重新整理一下资料 官方网站:http://www.sencha.com/products/touch/ 在线文档:http://docs.sen ...