51nod1220-约数之和【莫比乌斯反演,杜教筛】

正题

题目链接:http://www.51nod.com/Challenge/Problem.html#problemId=1220


题目大意

给出nnn,求∑i=1n∑j=1nσ(i∗j)\sum_{i=1}^n\sum_{j=1}^n\sigma(i*j)i=1nj=1nσ(ij)
其中σ\sigmaσ表示约数和。


解题思路

首先有结论σ(i∗j)=∑x∣i∑y∣j[gcd(x,y)==1]xyj\sigma(i*j)=\sum_{x|i}\sum_{y|j}[gcd(x,y)==1]\frac{x}{y}jσ(ij)=xiyj[gcd(x,y)==1]yxj
大概是枚举两个约数的占比。
∑i=1n∑j=1n∑x∣i∑y∣i[gcd(x,y)==1]xyj\sum_{i=1}^n\sum_{j=1}^n\sum_{x|i}\sum_{y|i}[gcd(x,y)==1]\frac{x}{y}ji=1nj=1nxiyi[gcd(x,y)==1]yxj
这里就直接上反演了
∑d=1nμ(d)∑i=1n∑j=1n∑x∣i∑y∣i[d∣gcd(x,y)]xyj\sum_{d=1}^n\mu(d)\sum_{i=1}^n\sum_{j=1}^n\sum_{x|i}\sum_{y|i}[d|gcd(x,y)]\frac{x}{y}jd=1nμ(d)i=1nj=1nxiyi[dgcd(x,y)]yxj
∑d=1nμ(d)∑x∣d∑y∣dxy∑x∣i∑y∣jj\sum_{d=1}^n\mu(d)\sum_{x|d}\sum_{y|d}\frac{x}{y}\sum_{x|i}\sum_{y|j}jd=1nμ(d)xdydyxxiyjj
∑d=1nμ(d)∑x∣d∑y∣dxyy(⌊ny⌋+1)⌊ny⌋⌊nx⌋2\sum_{d=1}^n\mu(d)\sum_{x|d}\sum_{y|d}\frac{x}{y}y\frac{(\lfloor\frac{n}{y}\rfloor+1)\lfloor\frac{n}{y}\rfloor\lfloor\frac{n}{x}\rfloor}{2}d=1nμ(d)xdydyxy2(yn+1)ynxn
∑d=1nμ(d)∑x∣d⌊nx⌋x∑y∣d(⌊ny⌋+1)⌊ny⌋2\sum_{d=1}^n\mu(d)\sum_{x|d}\lfloor\frac{n}{x}\rfloor x\sum_{y|d}\frac{(\lfloor\frac{n}{y}\rfloor+1)\lfloor\frac{n}{y}\rfloor}{2}d=1nμ(d)xdxnxyd2(yn+1)yn
∑d=1nμ(d)d∑x=1⌊nd⌋⌊nxd⌋x∑y=1⌊nd⌋(⌊nyd⌋+1)⌊nyd⌋2\sum_{d=1}^n\mu(d)d\sum_{x=1}^{\lfloor\frac{n}{d}\rfloor}\lfloor\frac{n}{xd}\rfloor x\sum_{y=1}^{\lfloor\frac{n}{d}\rfloor}\frac{(\lfloor\frac{n}{yd}\rfloor+1)\lfloor\frac{n}{yd}\rfloor}{2}d=1nμ(d)dx=1dnxdnxy=1dn2(ydn+1)ydn
前面那个∑d=1nμ(d)d\sum_{d=1}^n\mu(d)dd=1nμ(d)d可以杜教筛来求,卷上一个ididid之后∑d∣nμ(d)∗d∗nd=n∑d∣nμ(d)\sum_{d|n}\mu(d)*d*\frac{n}{d}=n\sum_{d|n}\mu(d)dnμ(d)ddn=ndnμ(d)就是ϵ\epsilonϵ了。

考虑如何求后面那两个,第一个我们把它化简一下∑i=1n(⌊ni⌋+1)⌊ni⌋2=∑i=1ni⌊ni⌋\sum_{i=1}^{n}\frac{(\lfloor\frac{n}{i}\rfloor+1)\lfloor\frac{n}{i}\rfloor}{2}=\sum_{i=1}^{n}i\lfloor\frac{n}{i}\rfloori=1n2(in+1)in=i=1niin
就和前面那个式子一样了,对于这个式子,我们可以理解为枚举每个数作为约数的次数,那么就有∑i=1ni⌊ni⌋=∑i=1nσ(i)\sum_{i=1}^ni\lfloor\frac{n}{i}\rfloor=\sum_{i=1}^n\sigma(i)i=1niin=i=1nσ(i)

这样我们就可以线性筛出比较小时的答案,然后比较大的时候就直接整除分块搞就好了。


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
#define ll long long
using namespace std;
const ll N=2e6,P=1e9+7;
ll n,cnt,low[N],pre[N],mu[N],pri[N],s[N];
map<ll ,ll > mark;bool v[N];
void Prime(){mu[1]=s[1]=1;for(ll i=2;i<N;i++){if(!v[i])s[i]=i+1,mu[i]=-i,low[i]=i,pri[++cnt]=i;for(ll j=1;j<=cnt&&i*pri[j]<N;j++){v[i*pri[j]]=1;if(i%pri[j]==0){low[i*pri[j]]=low[i]*pri[j];s[i*pri[j]]=(s[i]*pri[j]+s[i/low[i]])%P;break;}low[i*pri[j]]=pri[j];s[i*pri[j]]=s[i]*s[pri[j]]%P;mu[i*pri[j]]=mu[i]*mu[pri[j]];}}for(ll i=1;i<N;i++)mu[i]=(mu[i]+mu[i-1])%P,s[i]=(s[i-1]+s[i])%P;return;
}
ll Get_Mu(ll n){if(n<N)return mu[n];if(mark[n])return mark[n];ll ans=1;for(ll l=2,r;l<=n;l=r+1){r=n/(n/l);ans=(ans-Get_Mu(n/l)*(r*(r+1)/2-l*(l-1)/2)%P)%P;}return mark[n]=(ans+P)%P;
}
ll Get_Sum(ll n){if(n<N)return s[n];ll ans=0;for(ll l=1,r;l<=n;l=r+1){r=n/(n/l);ans=(ans+(n/l)*(r*(r+1)/2-l*(l-1)/2)%P)%P;}return (ans+P)%P;
}
int main()
{Prime();scanf("%lld",&n);ll ans=0;for(ll l=1,r;l<=n;l=r+1){r=n/(n/l);ll tmp=Get_Sum(n/l);tmp=tmp*tmp%P;ans=(ans+(Get_Mu(r)-Get_Mu(l-1))*tmp%P)%P;}printf("%lld",(ans+P)%P);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/320155.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CDQ分治与整体二分

首先说明&#xff0c;CDQ分治与整体二分都是离线算法 CDQ分治&#xff1a; 流程&#xff1a; 1.我们要解决一系列问题&#xff0c;这些问题一般包含修改和查询操作&#xff0c;可以把这些问题排成一个序列&#xff0c;用一个区间[L,R]表示。 2.分。递归处理左边区间[L,M]和…

博弈论讲解(二)

文章目录斐波那契博弈问题&#xff1a;结论证明&#xff1a;尼姆博奕(Nimm Game)问题&#xff1a;结论&#xff1a;证明&#xff1a;代码&#xff1a;公平组合博弈&#xff08;Impartial Combinatori Games&#xff09;理论知识&#xff08;1&#xff09;、若面临末状态者为获胜…

.net core实践系列之短信服务-架构设计

前言上篇《.net core实践系列之短信服务-为什么选择.net core&#xff08;开篇&#xff09;》简单的介绍了&#xff08;水了一篇&#xff09;.net core。这次针对短信服务的架构设计和技术栈的简析。源码地址&#xff1a;https://github.com/SkyChenSky/Sikiro.SMS为什么需要架…

【矩阵乘法】Matrix Power Series(poj 3233)

Matrix Power Series poj 3233 题目大意 给你一个矩阵A&#xff0c;让你求SAA2A3…AkS A A^2 A^3 … A^kSAA2A3…Ak 输入样例 2 2 4 0 1 1 1输出样例 1 2 2 3n⩽30,k⩽109,m<104,a∈A,a⩽32768n \leqslant 30,k \leqslant 10^9,m < 10^4,a\in A,a \leqslant32…

P3702-[SDOI2017]序列计数【矩阵乘法】

正题 题目链接:https://www.luogu.com.cn/problem/P3702 题目大意 nnn个不超过mmm的正整数&#xff0c;要求和是ppp的倍数且至少有一个质数。 解题思路 用总方案数减去只有非质数的方案数即可。 线性筛出所有质数&#xff0c;然后矩阵乘法转移即可。 时间复杂度O(mp3log⁡n…

字符串hash(一)

很久没遇到过hash的题了&#xff0c;今天来重新温故一下 文章目录序言常用的几个字符串hash方法&#xff1a;hash公式&#xff08;自然溢出&#xff09;讲解模板单hash讲解模板双hash讲解代码总结序言 你有没有想过&#xff0c;字符串存储一大溜&#xff0c;比较时又麻烦又折腾…

CAP 2.3版本发布,支持 MongoDB

前言经过2个月的调整及测试&#xff0c;CAP 2.3 版本终于发布了&#xff0c;这个版本最大的特性就是对于 MongoDB 的支持&#xff0c;感谢博客园团队的keke同学对于 MongoDB 支持所提供的 PR&#xff0c;相信随着博客园的使用&#xff0c;CAP 会越来越多的帮助到更多的人。CAP …

【矩阵乘法】递推(ssl 1532)

递推 ssl 1532 题目大意 给出数列a0,a1…ana_0,a_1…a_na0​,a1​…an​和fff的前n−1n-1n−1项f0,f1…fn−1f_0,f_1…f_{n-1}f0​,f1​…fn−1​ fia0∗fi−na1∗fi−(n−1)...an−1∗fi−1anf_ia_0*f_{i-n}a_1*f_{i-(n-1)}...a_{n-1}*f_{i-1}a_nfi​a0​∗fi−n​a1​∗fi…

P3185-[HNOI2007]分裂游戏【SG函数】

正题 题目链接:https://www.luogu.com.cn/problem/P3185 题目大意 nnn个瓶子&#xff0c;开始第iii个里有pip_ipi​个糖果&#xff0c;操作的人可以找到一个三元组(i,j,k)i<j≤k(i,j,k)\ i<j\leq k(i,j,k) i<j≤k然后取出iii中的一个糖果&#xff0c;在j,kj,kj,k中各…

牛客网 【每日一题】5月9日 过河

链接&#xff1a; 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 131072K&#xff0c;其他语言262144K 64bit IO Format: %lld题目描述 在河上有一座独木桥&#xff0c;一只青蛙想沿着独木桥从河的一侧跳到另一侧。在桥上有一些石子&#xff0…

.NETCore 实现容器化Docker与私有镜像仓库管理

一、Docker介绍Docker是用Go语言编写基于Linux操作系统的一些特性开发的&#xff0c;其提供了操作系统级别的抽象&#xff0c;是一种容器管理技术&#xff0c;它隔离了应用程序对基础架构&#xff08;操作系统等&#xff09;的依赖。相较于虚拟机而言&#xff0c;Docker共享的是…

【矩阵乘法】幼儿园数学题I(ssl 2513)

幼儿园数学题I ssl 2513 题目大意 定义fn(512)n−1f_n\left ( \frac{\sqrt{5}1}{2}\right )^{n-1}fn​(25​1​)n−1&#xff0c;求前n项的和,&#xff08;对109710^971097取模&#xff09;&#xff08;题目貌似出了些问题&#xff0c;实际上fff等价于斐波那契数列&#xff…

P4492-[HAOI2018]苹果树【dp】

正题 题目链接:https://www.luogu.com.cn/problem/P4492 题目大意 开始有一个节点&#xff0c;第iii次在一个儿子不超过222的节点下面长出一个新儿子编号为iii。求所有方案下树的路径长度和。 解题思路 考虑计算每条边的贡献&#xff0c;设gig_igi​表示大小为iii的树的形态…

字符串hash(二)

从上一届已经讲了字符串hash的方法&#xff0c;hash后怎么用也很重要 文章目录一.查询子串的hash值查询子串减去期中一个字符后的hash值查询两个子串拼接的hash值**hash的模板&#xff08;自然溢出&#xff09;**char s[10010]; ull hashs(char s[]) {int lenstrlen(s);ull bas…

记一次.net core 集成vue 实践

简介以前我们总是喜欢用服务端渲染前端&#xff08;虽然也有htmlajax这种做法&#xff09;&#xff0c;后来node诞生了&#xff0c;前端工具链&#xff08;不如说生态&#xff09;诞生了&#xff0c;大家都开始了前端的重构之路&#xff0c;本文将以一简单案例介绍下我们是如何…

【矩阵乘法】幼儿园数学题II(ssl 2514)

幼儿园数学题II ssl 2514 题目大意 给出式子 f(1)1,f(2)1f(1)1,f(2)1f(1)1,f(2)1 f(n)−f(3)−f(4)−f(5)−...−f(n−3)−f(n−2)(n4)(n−1)/2f(n)-f(3)-f(4)-f(5)-...-f(n-3)-f(n-2)(n4)(n-1)/2f(n)−f(3)−f(4)−f(5)−...−f(n−3)−f(n−2)(n4)(n−1)/2 让你求前n项的和…

P3705-[SDOI2017]新生舞会【0/1分数规划,费用流】

正题 题目链接:https://www.luogu.com.cn/problem/P3705 题目大意 nnn对人&#xff0c;给出两个n∗nn*nn∗n的矩形a,ba,ba,b。求一个nnn配对满足∑i1naxi,yi∑i1nbxi,yi\frac{\sum_{i1}^na_{x_i,y_i}}{\sum_{i1}^nb_{x_i,y_i}}∑i1n​bxi​,yi​​∑i1n​axi​,yi​​​最大。…

最短路径

SPFA (Bellman-Ford 的队列优化版本)&#xff1a; 1、求单源最短路径&#xff0c;即每个点到源点的最短距离 2、可以处理负权边的情况 3、可以判断是否出现负权回路 #include<iostream> #include<vector> #include<cstring> #include<queue> using…

牛客网 【每日一题】5月11日题目精讲 Moovie Mooving

题目链接 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 32768K&#xff0c;其他语言65536K 64bit IO Format: %lld题目描述 Bessie is out at the movies. Being mischievous as always, she has decided to hide from Farmer John for L (1 …

AspNetCore中使用Ocelot之 IdentityServer4

前言&#xff1a;Ocelot网关是基于AspNetCore开发的可扩展的高性能的企业级Api网关&#xff0c;目前已经基于2.0 升级版本升级&#xff0c;在使用AspNetCore 开发的时候可以使用2.0版本了&#xff0c;开源项目Ocelot 张大队长是主力的参与人员&#xff0c;以前提起张大队前面都…