$
Ans(l,r)=ans(r)-ans(l-1)
\\
ans(n)=\sum\limits_{i=1}^n
\sum\limits_{j=1}^i
\frac{j}{gcd(i,j)}
\\=
\sum\limits_{g=1}^n
\sum\limits_{i=1}^{n/g}
\sum\limits_{j=1}^n
j\cdot [gcd(i,j)=1]
\\=
\sum\limits_{g=1}^n
\sum\limits_{i=1}^{n/g}
\sum\limits_{j=1}^n
j\sum\limits_{d|i\wedge d|j}\mu(d)
\\=
\sum\limits_{g=1}^n
\sum\limits_{d=1}^{n/g}
\mu(d)d\sum\limits_{i=1}^{n/gd}
\sum\limits_{j=1}^n
j
\\=
\sum\limits_{t=1}^n
\sum\limits_{d|t}\mu(d)d
\sum\limits_{i=1}^{n/t}
\sum\limits_{j=1}^n
j
\\=
\sum\limits_{t=1}^n
a(t)S(n/t)
,\;
a(n)=\sum\limits_{d|n}\mu(d)d
,\;
S(n)=n(n+1)(n+2)/6=n(n+1)(2n+1)/12+n(n+1)/4
\\
A(n)=\sum\limits_{i=1}^na(i)
\\
A(n)=n-\sum\limits_{i=2}^nA(n/i)i
$

时间复杂度$O(n^{2/3})$

#include<bits/stdc++.h>
typedef unsigned long long i64;
const int P=1e9+,I2=(P+)/,I6=(P+)/;
int B;
const int M=3e6+;
int ps[M/],pp=;
bool np[M];
int va[M],vA[],n0;
int S3(int n){
return i64(n)*(n+)%P*(n+)%P;
}
int A(int n){
if(n<=B)return va[n];
int&w=vA[n0/n];
if(w)return w;
i64 s=;
for(int l=,r,c;l<n;l=r){
r=n/(c=n/(l+));
if((s+=i64(r+l+)*(r-l)%P*A(c))>i64(1.5e19))s%=P;
}
s=s%P*I2%P;
return w=(n-s+P)%P;
}
int F(int n){
i64 s=;
for(int l=,r,c,s0=,s1;l<n;l=r){
r=n/(c=n/(l+));
s1=A(r);
if((s+=i64(s1-s0+P)*S3(c))>i64(1.5e19))s%=P;
s0=s1;
}
return s%P*I6%P;
}
void pre(){
va[]=;
for(int i=;i<=B;++i){
if(!np[i]){
ps[pp++]=i;
va[i]=P+-i;
}
for(int j=,k;j<pp&&(k=i*ps[j])<=B;++j){
np[k]=;
if(i%ps[j]){
va[k]=va[i]*i64(P+-ps[j])%P;
}else{
va[k]=va[i];
break;
}
}
}
for(int i=;i<=B;++i)if((va[i]+=va[i-])>=P)va[i]-=P;
}
int cal(int n){
n0=n;
memset(vA,,sizeof(vA));
return F(n);
}
int main(){
int l,r;
scanf("%d%d",&l,&r);
B=pow(r,./.)*2.5;
pre();
printf("%d\n",(cal(r)-cal(l-)+P)%P);
return ;
}

51nod1227 平均最小公倍数的更多相关文章

  1. [51nod1227]平均最小公倍数(莫比乌斯反演+杜教筛)

    题意 求 $\sum_{i=a}^b \sum_{j=1}^i \frac{lcm(i,j)}{i}$. 分析 只需要求出前缀和, $$\begin{aligned}\sum_{i=1}^n \sum ...

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

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

  3. 51 nod 1227 平均最小公倍数

    原题链接 Lcm(a,b)表示a和b的最小公倍数,A(n)表示Lcm(n,i)的平均数(1 <= i <= n), 例如:A(4) = (Lcm(1,4) + Lcm(2,4) + Lcm ...

  4. 【51nod】1227 平均最小公倍数

    题解 这个故事告诉们数论函数不要往分式上跑,你推不出来 好久没推式子了这么明显的转化我都忘了= = 首先\(A(n) = \frac{1}{n} \sum_{i = 1}^{n} \frac{i * ...

  5. 51NOD 1227:平均最小公倍数——题解

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1227 懒得打公式了,看这位的吧:https://blog.csdn.ne ...

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

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

  7. 51nod-1227-平均最小公倍数

    题意 定义 \(n\) 的平均最小公倍数: \[ A(n)=\frac{1}{n}\sum _{i=1}^n\text{lcm}(n,i) \] 求 \[ \sum _{i=L}^RA(i) \] \ ...

  8. NOIp2018停课刷题记录

    Preface 老叶说了高中停课但是初中不停的消息后我就为争取民主献出一份力量 其实就是和老师申请了下让我们HW的三个人听课结果真停了 那么还是珍惜这次机会好好提升下自己吧不然就\(AFO\)了 Li ...

  9. 莫比乌斯反演/线性筛/积性函数/杜教筛/min25筛 学习笔记

    最近重新系统地学了下这几个知识点,以前没发现他们的联系,这次总结一下. 莫比乌斯反演入门:https://blog.csdn.net/litble/article/details/72804050 线 ...

随机推荐

  1. 按此格式写你的distributionUrl,可以直接用本地的gradle包

    distributionUrl=file\:/C:/Users/shenliuyong/.gradle/wrapper/dists/gradle-2.10-all/a4w5fzrkeut1ox71xs ...

  2. PYTHON 实现的微信跳一跳【辅助工具】仅作学习

    备注原地址:https://my.oschina.net/anlve/blog/1604163 我又做了一些优化,防止WX检测作弊 准备环境: Windows 10安卓手机,源码中有适配ios,然后链 ...

  3. Vue.js模板语法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. 合肥工业大学oj G-诺德森海岸

    #include<iostream> #include<vector> #include<bits/stdc++.h> using namespace std; v ...

  5. [C# 基础知识系列]专题三:如何用委托包装多个方法——委托链 (转载)

    引言: 上一专题介绍了下编译器是如何来翻译委托的,从中间语言的角度去看委托,希望可以帮助大家进一步的理解委托,然而之前的介绍都是委托只是封装一个方法,那委托能不能封装多个方法呢?因为生活中经常会听到, ...

  6. python中用psutil模块,yagmail模块监控CPU、硬盘、内存使用,阈值后发送邮件

    import yagmailimport psutildef sendmail(subject,contents): #连接邮箱服务器 yag = yagmail.SMTP(user='邮箱名称@16 ...

  7. linux下crontab定时执行shell脚本调用oracle 存储过程

    问题:脚本内调用存储过程,脚本直接执行没问题,使用crontab 执行脚本存储过程未执行 原因:缺少oracle环境变量 解决:在shell脚本里添加oracle的环境变量 #!/bin/sh PAT ...

  8. golang struct

    ex1 /* https://golangbot.com/structs/ struct 结构 结构就是一组字段. */ package main import "fmt" // ...

  9. [LeetCode&Python] Problem 27. Remove Element

    Given an array nums and a value val, remove all instances of that value in-placeand return the new l ...

  10. spring boot 单元测试

    Java新手 纯记录 @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest(classes = OutDemoApplication.clas ...