P3327-[SDOI2015]约数个数和【莫比乌斯反演】

正题

题目链接:https://www.luogu.com.cn/problem/P3327


题目大意

TTT组询问给出n,mn,mn,md(x)d(x)d(x)表示xxx的约数个数,求∑i=1n∑j=1md(i∗j)\sum_{i=1}^n\sum_{j=1}^md(i*j)i=1nj=1md(ij)


解题思路

对于iiijjj的两个约数a,ba,ba,b如果他们互质,那么a∗ba*babi∗ji*jij的约数,所以有
d(i∗j)=∑x∣i∑y∣j[gcd(x,y)==1]d(i*j)=\sum_{x|i}\sum_{y|j}[gcd(x,y)==1]d(ij)=xiyj[gcd(x,y)==1]
那么答案就是求∑i=1n∑j=1m∑x∣i∑y∣j[gcd(x,y)==1]\sum_{i=1}^n\sum_{j=1}^m\sum_{x|i}\sum_{y|j}[gcd(x,y)==1]i=1nj=1mxiyj[gcd(x,y)==1]
∑x=1n∑y=1m⌊nx⌋⌊my⌋[gcd(x,y)==1]\sum_{x=1}^n\sum_{y=1}^m\lfloor\frac{n}{x}\rfloor\lfloor\frac{m}{y}\rfloor[gcd(x,y)==1]x=1ny=1mxnym[gcd(x,y)==1]
我们定义
f(x)=∑x=1n∑y=1m⌊nx⌋⌊my⌋[gcd(x,y)==x]f(x)=\sum_{x=1}^n\sum_{y=1}^m\lfloor\frac{n}{x}\rfloor\lfloor\frac{m}{y}\rfloor[gcd(x,y)==x]f(x)=x=1ny=1mxnym[gcd(x,y)==x]
那么有F(x)=∑x∣df(d)=∑i=1n∑j=1m⌊nix⌋⌊miy⌋=∑i=1nx⌊nix⌋∗∑j=1mx⌊mjx⌋F(x)=\sum_{x|d}f(d)=\sum_{i=1}^n\sum_{j=1}^m\lfloor\frac{n}{ix}\rfloor\lfloor\frac{m}{iy}\rfloor=\sum_{i=1}^{\frac{n}{x}}\lfloor\frac{n}{ix}\rfloor*\sum_{j=1}^{\frac{m}{x}}\lfloor\frac{m}{jx}\rfloorF(x)=xdf(d)=i=1nj=1mixniym=i=1xnixnj=1xmjxm
考虑如何快速计算F(x)F(x)F(x),计算出w(x)=∑i=1x⌊xi⌋w(x)=\sum_{i=1}^x\lfloor\frac{x}{i}\rfloorw(x)=i=1xix,不难发现对于给出的n,mn,mn,mF(x)=w(nx)w(mx)F(x)=w(\frac{n}{x})w(\frac{m}{x})F(x)=w(xn)w(xm)


codecodecode

#include<cstdio> 
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=5e4+1;
ll T,n,m,ans,cnt;
ll pri[N],s[N],mu[N];
bool vis[N];
void prime(){mu[1]=1;for(ll i=2;i<N;i++){if(!vis[i])pri[++cnt]=i,mu[i]=-1;for(ll j=1;j<=cnt&&pri[j]*i<N;j++){vis[i*pri[j]]=1;if(i%pri[j]==0)break;mu[i*pri[j]]=-mu[i];}}for(ll i=1;i<N;i++)mu[i]+=mu[i-1];for(ll i=1;i<N;i++){for(ll l=1,r;l<=i;l=r+1){r=i/(i/l); s[i]+=(r-l+1)*(i/l);}}return;
}
int main()
{scanf("%lld",&T);prime();while(T--){scanf("%lld%lld",&n,&m);if(n>m)swap(n,m);ans=0;for(ll l=1,r;l<=n;l=r+1){r=min(n/(n/l),m/(m/l));ans+=s[n/l]*s[m/l]*(mu[r]-mu[l-1]);}printf("%lld\n",ans);}
}

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

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

相关文章

数学推导题,NTT,快速数论变换,Wannafly-乒乓球

乒乓球 题目描述 小 BoBoBo 是某省乒乓球名列前茅的选手&#xff0c;现在他有 nnn 颗乒乓球一字排开&#xff0c;第iii颗乒乓球的权值为 wiw_iwi​ 每次他会随机从现有的乒乓球中等概率选一颗拿走&#xff0c;然后得到的收益是这颗球左边第一个乒乓球和右边第一个乒乓球的权值…

ASP.NET Core 2.1带来SignalR、Razor类库

随着.NET Core 2.1的发布&#xff0c;微软推出了 ASP.NET Core 2.1。这是一个强大的版本&#xff0c;包括实时通信库SignalR&#xff0c;更新的模板使GDPR更容易遵守&#xff0c;并且针对Angular、React&#xff0c;以及React Redux更新了SPA模板。在2013年发布传统的ASP.NET时…

【bfs】WJ的逃离

WJ&#xff08;J&#xff09;的逃离 题目大意&#xff1a; 有一个nm的矩阵&#xff0c;*是不可走的&#xff0c;0是可走的&#xff0c;求1,1到n,m的最小转弯次数 原题&#xff1a; 题目描述 当WJ醒来时&#xff0c;发现自己被困在一个地图的左上角&#xff0c;幸好WJ有张图…

P2408- 不同子串个数【SA】

正题 题目链接:https://www.luogu.com.cn/problem/P2408 题目大意 给出一个字符串&#xff0c;求有多少个不同的子串。 解题思路 进行后缀排序之后&#xff0c;对于位置iii他有n−i1n-i1n−i1个后缀&#xff0c;然后它和排在它前面的后缀有heightiheight_iheighti​个重复的…

针对ASP.NET Core Web API的先进架构

.NET Core 最初是在2016年发布的&#xff0c;随着.NET Core 2.0的发布&#xff0c;微软拥有了下一个通用、模块化、跨平台和开源的平台主版本。.NET Core已经创建了许多API&#xff0c;在当前版本的.net框架中均可用。它最初是为下一代ASP.NET解决方案而创建的&#xff0c;但现…

线段树-HDU5737-这题有点神

HDU5737 题意 [1][1][1]有长度为nnn的序列A,BA,BA,B [2]Q[2]Q[2]Q此操作两种类型 (1,l,r,x)(1,l,r,x)(1,l,r,x)将区间[l,r][l,r][l,r]的aia_iai​覆盖为xxx(2,l,r)(2,l,r)(2,l,r)询问区间[l,r][l,r][l,r]中有多少ai≥bia_i \ge b_iai​≥bi​ 题解 考虑用线段树维护. 重点考…

【高精】Oliver的成绩(jzoj 2008)

Oliver的成绩 题目大意&#xff1a; Oliver考了一次试&#xff0c;现在知道他的语数英的成绩&#xff0c;还有年级其他n个人的成绩&#xff0c;现在问Oliver三科各和年级第一差多少分&#xff0c;如果Oliver在这一科上是第一&#xff0c;则输出‘0’ 样例输入 10 10 10 …

P4070-[SDOI2016]生成魔咒【SA,平衡树】

正题 题目链接:https://www.luogu.com.cn/problem/P4070 题目大意 长度为nnn的字符串&#xff0c;对于每个iii求字符串1∼i1\sim i1∼i部分有多少个不同的子串。 解题思路 对于整个串ans∑i1nn−i1−heightians\sum_{i1}^nn-i1-height_ians∑i1n​n−i1−heighti​&#xff…

ASP.NET Core 2.1 使用Docker运行

1.新建一个 ASP.NET Core 2.1 项目然后运行一下项目&#xff0c;确保我们刚刚建立的项目可以正常运行。2.编写 Dockerfile新建一个文本文件&#xff0c;命名为 DockerfileFROM microsoft/dotnet:2.1-aspnetcore-runtimeWORKDIR /appCOPY . .EXPOSE 80ENTRYPOINT ["dotnet&…

【DP】和谐的奶牛(jzoj 1750)

和谐的奶牛 题目大意&#xff1a; 有一些括号&#xff08;保证是合法的&#xff0c;合法&#xff1a;每一个左括号都有自己配对的有括号&#xff09;&#xff0c;现在要将这些括号分为两组&#xff08;其中一组可以为空&#xff09;&#xff0c;分完组后括号的顺序要和原来的…

费用流-Wannafly Day2 TwoGraph-神题

TwoGraph 题意 题解 这真是一道神题,这题有两点比较难想,其中第一点是最难想的. 我们先考虑只有一张图的情况. 性质: [1]如果给每个点匹配一条边,形成一个(点,边)(点,边)(点,边)对,其中点不能重复出现,边也不能重复出现.那么这些对形成的图的联通块要么是树,要么是环套树. 证…

ASP.NET Core Web API 与 SSL

SSL一直没有真正研究过SSL&#xff0c;不知道下面的理解是否正确。SSL是Secure Sockets Layer的缩写&#xff0c;它用来保护服务器和客户端之前的通信。它是基于信任加密的概念。在介绍SSL的原理之前&#xff0c;首先介绍一下加密&#xff08;Encryption&#xff09;的概念。刷…

P5662-纪念品【dp】

正题 题目链接:https://www.luogu.com.cn/problem/P5662 题目大意 有TTT天&#xff0c;nnn个纪念品&#xff0c;每个纪念品每天的价格不同&#xff0c;数量不限。开始小明有mmm块钱&#xff0c;求最后一天的最多钱。 解题思路 因为一个纪念品可以一天卖出并且一天买入&#…

【模拟】聊天服务器的外部流量

聊天服务器的外部流量 题目大意&#xff1a; 有一个通讯系统&#xff0c;可以将某人邀请进来&#xff08;name&#xff09;&#xff0c;也可以将某人T出去&#xff08;-name&#xff09;&#xff0c;也可以向群中的所有人发一条信息&#xff08;name&#xff1a;…&#xff0…

线段树-Pudding Monster CF526F-单调栈

Pudding Monster 题目连接:https://www.luogu.org/problem/show?pidCF526F 问题提出 给长度为nnn的排列AAA.问有多少(l,r)(l,r)(l,r),使得将Al,Al1,...,ArA_l,A_{l1},...,A_rAl​,Al1​,...,Ar​排序之后是连续的一段数.n≤105n \le 10^5n≤105 问题解决 判断一段区间是否…

P5664-Emiya家今天的饭【dp】

正题 题目链接:https://www.luogu.com.cn/problem/P5664 题目大意 对于nnn个方法&#xff0c;mmm个材料&#xff0c;一个方法配对一个材料可以做an,ma_{n,m}an,m​道菜。选择kkk个配对要求 配对至少为k>1k>1k>1每个配对的方法不同每个材料最多用⌊k2⌋\lfloor\frac…

GitHub宣布GitHub Education 新计划,学校可免费用企业版

今天 GitHub 宣布面向所有学校和教育机构开放 GitHub Education&#xff0c;方便学生和老师免费使用 GitHub 企业版功能&#xff0c;以及学生开发者工具包、GitHub 教室、培训等资源。2014 年&#xff0c;GitHub 推出了学生开发者工具包&#xff0c;其中包括 Azure 等云服务、G…

【dfs】聚会

聚会 题目大意&#xff1a; 有一些树&#xff0c;求深的树的深度 原题 解题思路&#xff1a; 从一个根出发&#xff0c;dfs往下搜 代码&#xff1a; #include<cstdio> #include<iostream> #include<cstring> using namespace std; int n,t,g,w,ans,c[2…

P3960-列队【权值线段树】

正题 题目链接:https://www.luogu.com.cn/problem/P3960 题目大意 n∗mn*mn∗m的队列&#xff0c;起初站在第(i,j)(i,j)(i,j)位置的人编号是(i−1)∗nj(i-1)*nj(i−1)∗nj。然后每次选择一个人出队后所有人向左补齐后所有人向前补齐&#xff0c;然后刚刚出列的那个人入队。 求…

2018 大湾区(深圳) .NET技术分享交流会 第一期

.NET Core 2.1 已于2018年5月30日正式发布&#xff0c;邀请粤港澳大湾区.NET技术专家和从业人员&#xff0c;一起分享与交流.NET技术的发展方向&#xff0c;提高粤港澳大湾区.NET技术交流氛围&#xff0c;挖掘.NET高级人才&#xff0c;为改善.NET生态系统贡献力量&#xff0c;使…