51Nod.1237.最大公约数之和 V3(莫比乌斯反演 杜教筛 欧拉函数)
\(Description\)
\(n\leq 10^{10}\),求
\]
\(Solution\)
首先
\]
注意不是\(\sum_{i=1}^n\sum_{j=1}^ngcd(i,j)=\sum_{d=1}^n\sum_{i=1}^n\sum_{j=1}^n[gcd(i,j)=d]\)!
\sum_{i=1}^n\sum_{j=1}^ngcd(i,j)&=\sum_{d=1}^nd\sum_{i=1}^n\sum_{j=1}^n[gcd(i,j)=d]\\
&=\sum_{d=1}^nd\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor\frac{n}{d}\rfloor}[gcd(i,j)=1]\\
&=\sum_{d=1}^nd\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\mu(i)\lfloor\frac{\lfloor\frac{n}{d}\rfloor}{i}\rfloor\lfloor\frac{\lfloor\frac{n}{d}\rfloor}{i}\rfloor\\
&=\sum_{d=1}^nd\sum_{d|t,t\leq n}\mu(\frac{t}{d})(\lfloor\frac{n}{t}\rfloor)^2\\
&=\sum_{t=1}^n(\lfloor\frac{n}{t}\rfloor)^2\sum_{d|t}d\mu(\frac{t}{d})\\
&=\sum_{t=1}^n(\lfloor\frac{n}{t}\rfloor)^2\varphi(t)
\end{aligned}
\]
然后就可以杜教筛了。
最后一步用到$$\sum_{d|n}\frac{n}{d}\mu(d)=\varphi(n)$$
证明:
首先有 \(\sum_{d|n}\varphi(d)=n\)(不证了).
设 \(f(n)=n\),则\(f(n)=\sum_{d|n}\varphi(d)\).
那么 \(\varphi(n)=\sum_{d|n}f(\frac{n}{d})\mu(d)\)
即 \(\sum_{d|n}\frac{n}{d}\mu(d)=\varphi(n)\).
//前缀和不要忘取模。。
#include<cstdio>
#include<cstring>
typedef long long LL;
const int N=4500000,mod=1e9+7;
int P[N>>2],cnt,phi[N+3];
LL n,sum[N+3],sum2[100000];
bool Not_P[N+3];
void Init()
{
phi[1]=1;
for(int i=2;i<=N;++i)
{
if(!Not_P[i]) P[++cnt]=i,phi[i]=i-1;
for(int j=1;j<=cnt&&i*P[j]<=N;++j)
{
Not_P[i*P[j]]=1;
if(i%P[j]) phi[i*P[j]]=phi[i]*(P[j]-1);
else {phi[i*P[j]]=phi[i]*P[j]; break;}
}
}
for(int i=1;i<=N;++i) sum[i]=sum[i-1]+phi[i], sum[i]>=mod?sum[i]-=mod:0;
}
LL FP(LL x,LL k)
{
LL t=1;
for(;k;k>>=1,x=x*x%mod)
if(k&1) t=t*x%mod;
return t;
}
const LL inv2=FP(2,mod-2);
LL Calc(LL x)
{
if(x<=N) return sum[x];
else if(~sum2[n/x]) return sum2[n/x];
LL t=x%mod, res=t*(t+1)%mod*inv2%mod;
for(LL i=2,las;i<=x;i=las+1)
las=x/(x/i),(res-=(las-i+1)*Calc(x/i)%mod)%=mod;
return sum2[n/x]=(res+mod)%mod;
}
int main()
{
Init();//scanf("%I64d",&n);
scanf("%lld",&n);
memset(sum2,0xff,sizeof sum2);
LL res=0;
for(LL i=1,las,t;i<=n;i=las+1)
las=n/(n/i), t=n/i%mod, (res+=t*t%mod*(Calc(las)-Calc(i-1)+mod)%mod)%=mod;
printf("%lld",res);
return 0;
}//9800581876
51Nod.1237.最大公约数之和 V3(莫比乌斯反演 杜教筛 欧拉函数)的更多相关文章
- 2019年南京网络赛E题K Sum(莫比乌斯反演+杜教筛+欧拉降幂)
目录 题目链接 思路 代码 题目链接 传送门 思路 首先我们将原式化简: \[ \begin{aligned} &\sum\limits_{l_1=1}^{n}\sum\limits_{l_2 ...
- 51nod 1220 约数之和【莫比乌斯反演+杜教筛】
首先由这样一个式子:\( d(ij)=\sum_{p|i}\sum_{q|j}[gcd(p,q)==1]\frac{pj}{q} \)大概感性证明一下吧我不会证 然后开始推: \[ \sum_{i=1 ...
- [复习]莫比乌斯反演,杜教筛,min_25筛
[复习]莫比乌斯反演,杜教筛,min_25筛 莫比乌斯反演 做题的时候的常用形式: \[\begin{aligned}g(n)&=\sum_{n|d}f(d)\\f(n)&=\sum_ ...
- 【bzoj3930】[CQOI2015]选数 莫比乌斯反演+杜教筛
题目描述 我们知道,从区间[L,H](L和H为整数)中选取N个整数,总共有(H-L+1)^N种方案.小z很好奇这样选出的数的最大公约数的规律,他决定对每种方案选出的N个整数都求一次最大公约数,以便进一 ...
- [BZOJ 3930] [CQOI 2015]选数(莫比乌斯反演+杜教筛)
[BZOJ 3930] [CQOI 2015]选数(莫比乌斯反演+杜教筛) 题面 我们知道,从区间\([L,R]\)(L和R为整数)中选取N个整数,总共有\((R-L+1)^N\)种方案.求最大公约数 ...
- 51NOD 1237 最大公约数之和 V3 [杜教筛]
1237 最大公约数之和 V3 题意:求\(\sum_{i=1}^n\sum_{j=1}^n(i,j)\) 令\(A(n)=\sum_{i=1}^n(n,i) = \sum_{d\mid n}d \c ...
- NOI 2016 循环之美 (莫比乌斯反演+杜教筛)
题目大意:略 洛谷传送门 鉴于洛谷最近总崩,附上良心LOJ链接 任何形容词也不够赞美这一道神题 $\sum\limits_{i=1}^{N}\sum\limits_{j=1}^{M}[gcd(i,j) ...
- 51nod 1237 最大公约数之和 V3【欧拉函数||莫比乌斯反演+杜教筛】
用mu写lcm那道卡常卡成狗(然而最后也没卡过去,于是写一下gcd冷静一下 首先推一下式子 \[ \sum_{i=1}^{n}\sum_{j=1}^{n}gcd(i,j) \] \[ \sum_{i= ...
- 51nod 1237 最大公约数之和 V3(杜教筛)
[题目链接] https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1237 [题目大意] 求[1,n][1,n]最大公约数之和 ...
随机推荐
- C# 无法识别的消息版本。
问题:最近跟OA的java项目做审核接口,调用接口时提示"无法识别的消息版本.“ 解决:一直以为是协议不兼容,查了半天,最终发现是这个项目.net framework版本太低,升级为高版本即 ...
- vc++调用exe获取输出信息
目的 调用命令行程序,返回结果. 思路 把命令行结果输入到管道中,exe的输出信息都存在了strOutput这个变量里. 实现代码 CString strCmd = L"yara64.exe ...
- python3 三元表达式,列表解析
python3 三元表达式,列表解析 三元表达式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 x=2 y=3 if x > y ...
- Django 自定义过滤器和模板标签
前提:自定义模板标签和过滤器必须位于Django的某个应用中,这个应用可以包含一个templatetags目录, 和models.py views.py 处于同一级目录.若这个templatetags ...
- MIPI协议学习总结(一)
一.MIPI 简介: MIPI(移动行业处理器接口)是Mobile Industry Processor Interface的缩写.MIPI是MIPI联盟发起的为移动应用处理器制定的开放标准. 已经完 ...
- vss 日文文件路径的名字在中文系统下乱码
解决方式:tools-font 文字设置 日本語
- angular下载安装
1.下载安装nodejs 官方地址:https://nodejs.org/en/download/ 2.验证是否安装成功 node -v npm -v 公司内网需要设置代理 npm confi ...
- HDU 1573
/* 同余方程组为 X = ri (mod ai) 在范围内求X的个数 先求出特解 X0: 求出 ai数组的LCM: 则有 Xi = X0+LCM 均能满足方程组,判断是否在范围内!! */ #inc ...
- 查看Java JVM参数配置信息命令
查看Java JVM参数配置信息命令 java -XX:+PrintCommandLineFlags jvm运行时状态的参数,可以很快找出问题所在.现在把几个命令记录一下:1. jstat这个命令对于 ...
- python 全栈开发,Day110(django ModelForm,客户管理之 编辑权限(一))
昨日内容回顾 1. 简述权限管理的实现原理. 粒度控制到按钮级别的权限控制 - 用户登陆成功之后,将权限和菜单信息放入session - 每次请求时,在中间件中做权限校验 - inclusion_ta ...