bzoj 3994: [SDOI2015]约数个数和
来源:互联网 发布:手机 网页淘宝好 编辑:程序博客网 时间:2024/05/16 12:44
题意:求
∑ni∑mjd(ij)
d(n)为n的约数个数。
题解:
首先要知道一个结论:
那么这个东西怎么证明呢
首先假设质数p在n中指数为k1,m中k2。
根据d函数的求法
所以p对d(nm)的贡献为
因为要
共
那所有符合条件的对数,根据乘法原理,就是
所以可以变成
然后莫比乌斯反演搞搞就好了。
code:
#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#include<cmath>#include<algorithm>#define LL long longusing namespace std;int mu[50010],prime[50010],pr=0;LL f[50010];bool v[50010];void pre(){ memset(v,true,sizeof(v)); mu[1]=1; for(int i=2;i<=50000;i++) { if(v[i]) prime[++pr]=i,mu[i]=-1; for(int j=1;j<=pr&&i*prime[j]<=50000;j++) { v[i*prime[j]]=false; if(i%prime[j]==0){mu[i*prime[j]]=0;break;} mu[i*prime[j]]=-mu[i]; } } for(int k=1;k<=50000;k++) { mu[k]+=mu[k-1]; int pos; for(int i=1;i<=k;i=pos+1) { pos=k/(k/i); f[k]+=(LL)(pos-i+1)*(LL)(k/i); } }}int main(){ pre(); int T;scanf("%d",&T); while(T--) { int n,m;scanf("%d %d",&n,&m); if(n>m) swap(n,m); LL ans=0,pos; for(int i=1;i<=n;i=pos+1) { pos=min(n/(n/i),m/(m/i)); ans+=(LL)(mu[pos]-mu[i-1])*f[n/i]*f[m/i]; } printf("%lld\n",ans); }}
阅读全文
2 0
- [bzoj 3994] sdoi2015 约数个数和
- BZOJ 3994 [SDOI2015]约数个数和
- bzoj 3994 [SDOI2015]约数个数和
- BZOJ 3994 [SDOI2015]约数个数和
- bzoj 3994: [SDOI2015]约数个数和
- bzoj 3994: [SDOI2015]约数个数和(反演)
- 3994: [SDOI2015]约数个数和
- [莫比乌斯反演 约数个数] BZOJ 3994 [SDOI2015]约数个数和
- BZOJ 3994 Sdoi2015 约数个数和 莫比乌斯反演
- BZOJ 3994 [SDOI2015]约数个数和 (神定理+莫比乌斯反演)
- BZOJ 3994: [SDOI2015]约数个数和|莫比乌斯反演
- BZOJ 3994 [SDOI2015]约数个数和 (莫比乌斯反演)
- BZOJ 3994: [SDOI2015]约数个数和 莫比乌斯反演
- BZOJ 3994 [SDOI2015]约数个数和 莫比乌斯反演
- [BZOJ]3994 [SDOI2015]约数个数和 莫比乌斯 + 分块
- 【SDOI2015】【BZOJ3994】约数个数和
- [BZOJ3994][SDOI2015]约数个数和
- BZOJ3994: [SDOI2015]约数个数和
- Android动画总结
- 【Unity】ScriptableObject的介绍
- Arcgis javascript那些事儿(十七)——地理编码服务的发布与使用
- SEOer们应该系统的学习哪些知识呢?个人分享
- 数据结构-各种排序方式的时空复杂度及稳定性表
- bzoj 3994: [SDOI2015]约数个数和
- centos7安装rabbitmq(非RPM安装,感觉比activemq麻烦)
- [插头DP] poj3133 Manhattan Wiring
- Canvas标签用来绘制图像会使用到的方法和属性
- js进制转换操作整理
- Unreal Engine 4(虚幻UE4)GameplayAbilities 插件入门教程(三)技能标签(Ability Tags)
- 1017. A除以B (20)
- css实现Flex布局
- C++ 编程常用的知识