题目

设 \(\large A(n)=\frac{1}{n}\sum_{i=1}^n lcm(i,n)\),

求 \(\sum_{i=l}^rA(i)\),\(n\leq 10^9\)


分析

题意可以转化成求 \(\large \sum_{i=1}^n\frac{1}{i}\sum_{j=1}^i lcm(i,j)\)

首先把 \(lcm\) 弄掉就是 \(\large \sum_{i=1}^n\sum_{j=1}^i\frac{j}{\gcd(i,j)}\)

考虑枚举 \(\gcd(i,j)\) 那么再化简一下可以得到

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

设 \(\large f(n)=\sum_{i=1}^{n}j[\gcd(n,i)==1]\),那么 \(\large f(n)=\begin{cases}\frac{n\varphi(n)}{2}[n>1]\\1\end{cases}\)

那么原式进一步化简为 \(\large \frac{n}{2}+\frac{1}{2}\sum_{i=1}^n\sum_{d|i}d\varphi(d)\)

枚举 \(d\) 可以得到

\[\frac{n}{2}+\frac{1}{2}\sum_{d=1}^nd\varphi(d)\lfloor\frac{n}{d}\rfloor
\]

外层整除分块,然后里层卷一个 \(id\) 杜教筛就可以了


代码

#include <cstdio>
#include <unordered_map>
using namespace std;
const int N=10000011,mod=1000000007;
const long long i2=(mod+1)/2,i6=i2/3;
int f[N],prime[N],v[N],Cnt,A,B;
unordered_map<int,int>F;
int mo(int x,int y){return x+y>=mod?x+y-mod:x+y;}
void Pro(int n){
f[1]=v[1]=1;
for (int i=2;i<=n;++i){
if (!v[i]) prime[++Cnt]=v[i]=i,f[i]=i*(i-1ll)%mod;
for (int j=1;j<=Cnt&&prime[j]<=n/i;++j){
f[i*prime[j]]=1ll*f[i]*f[prime[j]]%mod,v[i*prime[j]]=1;
if (i%prime[j]==0){
f[i*prime[j]]=mo(f[i*prime[j]],1ll*f[i]*prime[j]%mod);
break;
}
}
}
for (int i=2;i<=n;++i) f[i]=mo(f[i],f[i-1]);
}
int phid(int n){
if (n<=N-11) return f[n];
if (F.find(n)!=F.end()) return F[n];
int ans=i6*n%mod*(n+1)%mod*(n<<1|1)%mod;
for (int l=2,r;l<=n;l=r+1)
r=n/(n/l),ans=mo(ans,mod-i2*(l+r)%mod*(r-l+1)%mod*phid(n/l)%mod);
return ans;
}
int answ(int n){
int ans=n,las=0;
for (int l=1,r,now;l<=n;l=r+1,las=now){
r=n/(n/l),now=phid(r);
ans=mo(ans,1ll*(now-las+mod)*(n/l)%mod);
}
return i2*ans%mod;
}
int main(){
Pro(N-11),scanf("%d%d",&A,&B);
return !printf("%d",mo(answ(B),mod-answ(A-1)));
}

#杜教筛,欧拉函数#51nod 1227 平均最小公倍数的更多相关文章

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

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

  2. luogu P3768 简单的数学题 杜教筛 + 欧拉反演 + 逆元

    求 $\sum_{i=1}^{n}\sum_{j=1}^{n}ijgcd(i,j)$   考虑欧拉反演: $\sum_{d|n}\varphi(d)=n$   $\Rightarrow \sum_{i ...

  3. 2019年南京网络赛E题K Sum(莫比乌斯反演+杜教筛+欧拉降幂)

    目录 题目链接 思路 代码 题目链接 传送门 思路 首先我们将原式化简: \[ \begin{aligned} &\sum\limits_{l_1=1}^{n}\sum\limits_{l_2 ...

  4. The Euler function(线性筛欧拉函数)

    /* 题意:(n)表示小于n与n互质的数有多少个,给你两个数a,b让你计算a+(a+1)+(a+2)+......+b; 初步思路:暴力搞一下,打表 #放弃:打了十几分钟没打完 #改进:欧拉函数:具体 ...

  5. 51nod 1227 平均最小公倍数【欧拉函数+杜教筛】

    以后这种题能用phi的就不要用mu-mu往往会带着个ln然后被卡常致死 把题目要求转换为前缀和相减的形式,写出来大概是要求这样一个式子: \[ \sum_{i=1}^{n}\sum_{j=1}^{i} ...

  6. 51NOD 1227 平均最小公倍数 [杜教筛]

    1227 平均最小公倍数 题意:求\(\frac{1}{n} \sum_{i=1}^n lcm(n,i)\) 和的弱化版? \[ ans = \frac{1}{2}((\sum_{i=1}^n \su ...

  7. 素数的线性筛 && 欧拉函数

    O(n) 筛选素数 #include<bits/stdc++.h> using namespace std; const int M = 1e6 + 10 ; int mindiv[M] ...

  8. BZOJ 2818 GCD 素数筛+欧拉函数+前缀和

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2818 题意:给定整数N,求1<=x,y<=n且Gcd(x,y)为素数的数对( ...

  9. [bzoj 2190][SDOI2008]仪仗队(线性筛欧拉函数)

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2190 分析:就是要线性筛出欧拉函数... 直接贴代码了: memset(ans,,sizeof ...

  10. 积性函数&线性筛&欧拉函数&莫比乌斯函数&因数个数&约数个数和

    只会搬运YL巨巨的博客 积性函数 定义 积性函数:对于任意互质的整数a和b有性质f(ab)=f(a)f(b)的数论函数. 完全积性函数:对于任意整数a和b有性质f(ab)=f(a)f(b)的数论函数 ...

随机推荐

  1. Redis居然还有比RDB和AOF更强大的持久化方式?

    https://cloud.tencent.com/developer/article/1786055

  2. 程序员应具备的PS基本技能(三):程序员使用PSD源文件切图

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  3. 项目实战:Qt+OSG三维2D文字实时效果查看工具

    需求   OSG三维中2D文字的基本属性较多,方便实时查看效果,并出对应文本代码.   Demo      工具下载地址   CSDN免积分下载地址:https://download.csdn.net ...

  4. django从配置文件中读取数据库信息

    创建配置文件my.cnf [client] database=django_db user=root password=123456 host=127.0.0.1 port=3306 settings ...

  5. 内存管理机制 & 垃圾回收机制

    内存管理机制 python是由c开发出来的. 看源码分析,下载python安装包tar包 解压后主要看Include和Objects这两个文件夹 # 分析 在创建对象时,如 v = 0.3 源码内部: ...

  6. python如何多版本共存

    1. 先正常安装多个python版本,比如我电脑里面是安装的3.10以及3.12 2. 安装的时候建议不要选择系统盘,可以用两个目录安装,例如: d:\py310\... d:\py312\... 3 ...

  7. PRINCE2系列一基于项目情境自定义解决方案

    PRINCE2(PRojects IN Controlled Environments,受控环境下的项目管理) 对项目进行了如下定义:项目是按照一个被批准的商业论证,为了交付一个或多个商业产品而创建的 ...

  8. 面试官:说说volatile底层实现原理?

    在 Java 并发编程中,有 3 个最常用的关键字:synchronized.ReentrantLock 和 volatile. 虽然 volatile 并不像其他两个关键字一样,能保证线程安全,但 ...

  9. 磁盘 U盘找不到

    及磁盘找不到了, 第一步: 看排线是否插好,稳当 第二步:在磁盘管理下面,磁盘是否还在,如果磁盘显示在,只是没有磁盘符 第三步:diskpart ,进入磁盘  其他的命令自己 查询 第四步:进入 CM ...

  10. [.Net]使用Soa库+Abp搭建微服务项目框架(四):动态代理和RPC

    ​上一章我们完成了小项目的面向服务体系改造,你或许一直在思考一个问题.为什么要将业务独立成微服务? 微服务原理 以一个健康医疗系统为例, 这个系统包含了用户模块,问卷的发放与填写,图表显示,报表生成与 ...