题目描述

求∑i=1n∑j=1n(i,j) mod (1e9+7)n&lt;=1010\sum_{i=1}^n\sum_{j=1}^n(i,j)~mod~(1e9+7)\\n&lt;=10^{10}i=1∑n​j=1∑n​(i,j) mod (1e9+7)n<=1010

题目分析

乍一看十分像裸莫比乌斯反演,然而nnn的范围让人望而却步

于是先变化一下式子

Ans=∑i=1n∑j=1n(i,j)Ans=\sum_{i=1}^n\sum_{j=1}^n(i,j)Ans=i=1∑n​j=1∑n​(i,j)

枚举T=(i,j)T=(i,j)T=(i,j)

=∑T=1n∑i=1⌊nT⌋∑j=1⌊nT⌋[(i,j)==1]=∑T=1n∑i=1⌊nT⌋∑j=1⌊nT⌋∑d∣i,d∣jμ(d)=∑T=1nT∑d=1⌊nT⌋μ(d)⌊nTd⌋2=\sum_{T=1}^n\sum_{i=1}^{\lfloor\frac nT\rfloor}\sum_{j=1}^{\lfloor\frac nT\rfloor}[(i,j)==1]\\=\sum_{T=1}^n\sum_{i=1}^{\lfloor\frac nT\rfloor}\sum_{j=1}^{\lfloor\frac nT\rfloor}\sum_{d|i,d|j}\mu(d)\\=\sum_{T=1}^nT\sum_{d=1}^{\lfloor\frac nT\rfloor}\mu(d){\lfloor\frac n{Td}\rfloor}^2=T=1∑n​i=1∑⌊Tn​⌋​j=1∑⌊Tn​⌋​[(i,j)==1]=T=1∑n​i=1∑⌊Tn​⌋​j=1∑⌊Tn​⌋​d∣i,d∣j∑​μ(d)=T=1∑n​Td=1∑⌊Tn​⌋​μ(d)⌊Tdn​⌋2

令k=Td

=∑k=1n⌊nk⌋2φ(k)=\sum_{k=1}^n{\lfloor\frac n{k}\rfloor}^2\varphi(k)=k=1∑n​⌊kn​⌋2φ(k)

则此时可以整除分块优化,每次算出⌊nk⌋{\lfloor\frac n{k}\rfloor}⌊kn​⌋相等的上下界i,ji,ji,j后用莫比乌斯反演计算(Sφ(j)−Sφ(i−1))(S\varphi(j)-S\varphi(i-1))(Sφ(j)−Sφ(i−1))

由于计算φ\varphiφ的前缀和时记忆化处理过,所以在杜教筛外面再套了一个整除分块优化不会影响时间复杂度,复杂度仍是Θ(n23)\Theta(n^{\frac23})Θ(n32​)

AC Code
#include <cstdio>
#include <map>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long LL;
const int mod = 1e9+7;
const int MAXN = 5e6+1;
const int inv2 = 500000004;
map<LL, LL> S; LL s[MAXN];
int Prime[MAXN], Cnt, phi[MAXN];
bool IsnotPrime[MAXN]; void init()
{
phi[1] = 1;
for(int i = 2; i < MAXN; ++i)
{
if(!IsnotPrime[i]) Prime[++Cnt] = i, phi[i] = i-1;
for(int j = 1; j <= Cnt && i * Prime[j] < MAXN; ++j)
{
IsnotPrime[i * Prime[j]] = 1;
if(i % Prime[j] == 0)
{
phi[i * Prime[j]] = phi[i] * Prime[j];
break;
}
phi[i * Prime[j]] = phi[i] * phi[Prime[j]];
}
}
for(int i = 1; i < MAXN; ++i) s[i] = (s[i-1] + phi[i]) % mod;
} inline LL sum(LL n)
{
if(n < MAXN) return s[n];
if(S.count(n)) return S[n];
LL ret = (n%mod) * ((n+1)%mod) % mod * inv2 % mod;
for(LL i = 2, j; i <= n; i=j+1)
{
j = n/(n/i);
ret = (ret - sum(n/i) * ((j-i+1)%mod) % mod) % mod;
}
return S[n] = ret;
} inline LL solve(LL n)
{
LL ret = 0;
for(LL i = 1, j; i <= n; i=j+1)
{
j = n/(n/i);
ret = (ret + ((n/i)%mod) * ((n/i)%mod) % mod * ((sum(j)-sum(i-1))%mod) % mod) % mod;
}
return ret;
}
int main ()
{
init(); LL n;
scanf("%lld", &n);
printf("%lld\n", (solve(n)+mod)%mod);
}

[51Nod 1237] 最大公约数之和 (杜教筛+莫比乌斯反演)的更多相关文章

  1. BZOJ_4176_Lucas的数论_杜教筛+莫比乌斯反演

    BZOJ_4176_Lucas的数论_杜教筛+莫比乌斯反演 Description 去年的Lucas非常喜欢数论题,但是一年以后的Lucas却不那么喜欢了. 在整理以前的试题时,发现了这样一道题目“求 ...

  2. 【XSY2731】Div 数论 杜教筛 莫比乌斯反演

    题目大意 定义复数\(a+bi\)为整数\(k\)的约数,当且仅当\(a\)和\(b\)为整数且存在整数\(c\)和\(d\)满足\((a+bi)(c+di)=k\). 定义复数\(a+bi\)的实部 ...

  3. [CQOI2015][bzoj3930] 选数 [杜教筛+莫比乌斯反演]

    题面: 传送门 思路: 首先我们把区间缩小到$\left[\lfloor\frac{L-1}{K}\rfloor,\lfloor\frac{R}{K}\rfloor\right]$ 这道题的最特殊的点 ...

  4. [bzoj 4176] Lucas的数论 (杜教筛 + 莫比乌斯反演)

    题面 设d(x)d(x)d(x)为xxx的约数个数,给定NNN,求 ∑i=1N∑j=1Nd(ij)\sum^{N}_{i=1}\sum^{N}_{j=1} d(ij)i=1∑N​j=1∑N​d(ij) ...

  5. [51nod1220] 约数之和(杜教筛+莫比乌斯反演)

    题面 传送门 题解 嗯--还是懒得写了--这里 //minamoto #include<bits/stdc++.h> #define R register #define IT map&l ...

  6. bzoj 4916: 神犇和蒟蒻 (杜教筛+莫比乌斯反演)

    题目大意: 读入n. 第一行输出“1”(不带引号). 第二行输出$\sum_{i=1}^n i\phi(i)$. 题解: 所以说那个$\sum\mu$是在开玩笑么=.= 设$f(n)=n\phi(n) ...

  7. 51nod 1237 最大公约数之和 V3(杜教筛)

    [题目链接] https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1237 [题目大意] 求[1,n][1,n]最大公约数之和 ...

  8. 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 ...

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

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

随机推荐

  1. QPS、TPS、PV、UV、GMV、IP、RPS?

    QPS.TPS.PV.UV.GMV.IP.RPS QPSQueries Per Second,每秒查询数.每秒能够响应的查询次数. QPS是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准, ...

  2. 关于/etc/rc.local

    /etc/rc.d/rc.local 用于添加开机启动命令 /etc/rc.local是/etc/rc.d/rc.local的软连接 简单来说 开机自启的

  3. Redis--set类型操作命令

    集合类型 set redis 的 Set 是 string 类型的无序集合,集合成员是唯一的,即集合中不能出现重复的数据 集合类型 set ——常用命令 sadd /smembers /sismemb ...

  4. 【Linux】一步一步学Linux——Unix发展史(02)

    目录 00. 目录 01. 请参考Unix传奇 02. 03. 00. 目录 @ 本博客后面会更新 01. 请参考Unix传奇 链接: https://coolshell.cn/articles/23 ...

  5. Vue基础语法(样式绑定,事件处理,表单,Vue组件)

    样式绑定 事件处理 表单 Vue组件 样式绑定 <!DOCTYPE html> <html> <head> <meta charset="utf-8 ...

  6. css文字截断

    通过css将文字进行截断,截断部分使用省略号代替 .impleName{ max-width: 100%; /*最大宽度为当前元素的100%*/ display: inline-block; whit ...

  7. Spring Cloud 基于Consul 实现配置服务

    Spring Cloud体系中提供了Config组件来进行配置服务管理.而Consul除了提供服务注册与发现功能外,同时也提供配置管理功能.本位将介绍如何结合Spring Cloud + Consul ...

  8. 以EntifyFramework DBFirst方式访问SQLite数据库

    前面一直在找EF Code First方式来访问SQLite数据库,后面得出的结论是SQLite不支持 Code First, 虽然有非官方的库SQLite.CodeFirst可以使用,但一直没搞成功 ...

  9. 浅学CLR via C#笔记之类型转换

    我们都知道CLR最重要的一个特性就是类型安全,它在运行时就知道对象类型. 但我们会经常用到将一种类型转换成另一种类型,CLR也允许将对象转成他的实际类型,或者是它的基类型. 在C#中,支持隐士转换成它 ...

  10. k8s 开源web操作平台

    https://kuboard.cn/install/install-dashboard.html kuborad