数学:莫比乌斯反演-约数个数和
BZOJ3994:利用莫比乌斯反演求约数个数和
解答此题需要利用约束个数函数的形式,将其与gcd联系再一起,然后再反演,推导
很麻烦
1 #include<cstdio> 2 #include<algorithm> 3 using std::min; 4 const int maxn=50005; 5 int cnt; 6 long long ans=0; 7 bool vis[maxn]; 8 int mu[maxn],sum[maxn]; 9 long long prim[maxn],g[maxn]; 10 inline long long read() 11 { 12 long long x=0,f=1;char ch=getchar(); 13 while(ch<'0'||ch>'9') {if(ch=='-')f=-1;ch=getchar();} 14 while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} 15 return x*f; 16 } 17 void get_mu(int n) 18 { 19 mu[1]=1; 20 for(int i=2;i<=n;i++) 21 { 22 if(!vis[i]){prim[++cnt]=i;mu[i]=-1;} 23 for(int j=1;j<=cnt&&prim[j]*i<=n;j++) 24 { 25 vis[prim[j]*i]=1; 26 if(i%prim[j]==0) break; 27 else mu[i*prim[j]]=-mu[i]; 28 } 29 } 30 for(int i=1;i<=n;i++) sum[i]=sum[i-1]+mu[i]; 31 for(int i=1;i<=n;i++) 32 { 33 for(int l=1,r;l<=i;l=r+1) 34 { 35 r=(i/(i/l)); 36 g[i]+=(long long)(r-l+1)*(long long)(i/l); 37 } 38 } 39 } 40 int main() 41 { 42 int T,n,m,max_rep; 43 T=read(); 44 get_mu(50000); 45 while(T--) 46 { 47 ans=0; 48 n=read();m=read(); 49 max_rep=min(n,m); 50 for(int l=1,r;l<=max_rep;l=r+1) 51 { 52 r=min(n/(n/l),m/(m/l)); 53 ans+=(sum[r]-sum[l-1])*(long long)g[n/l]*(long long)g[m/l]; 54 } 55 printf("%lld\n",ans); 56 } 57 return 0; 58 }
转载于:https://www.cnblogs.com/aininot260/p/9702622.html
数学:莫比乌斯反演-约数个数和相关推荐
- 【数学专题】约数个数与欧拉函数
整理的算法模板合集: ACM模板 目录 一.约数个数 1. AcWing 1291. 轻拍牛头 2. AcWing 1294. 樱花 2.1 AcWing 197. 阶乘分解 3. AcWing 19 ...
- SDOI2015 约数个数和(莫比乌斯反演经典、双上限整除分块)超详细笔记
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 AcWing 1358. 约数个数和(莫比乌斯反演经典.双上限整除分块) #include <c ...
- 【bzoj3994】[SDOI2015]约数个数和 莫比乌斯反演
题目描述 设d(x)为x的约数个数,给定N.M,求 输入 输入文件包含多组测试数据. 第一行,一个整数T,表示测试数据的组数. 接下来的T行,每行两个整数N.M. 输出 T行,每行一个整数,表示你 ...
- [SDOI2015]约数个数和【莫比乌斯反演】
[SDOI2015]约数个数和 题意:\(d(x)\)为\(x\)的约数个数,求\(\sum_{i=1}^n\sum{j=1}^md(ij)\) 由结论得\[ans=\sum_{i=1}^n\sum_ ...
- BZOJ 3994: [SDOI2015]约数个数和 [莫比乌斯反演 转化]
2015 题意:\(d(i)\)为i的约数个数,求\(\sum\limits_{i=1}^n \sum\limits_{j=1}^m d(ij)\) \(ij\)都爆int了.... 一开始想容斥一下 ...
- 「BZOJ 3994」「SDOI 2015」约数个数和「莫比乌斯反演」
题意 设\(d(x)\)为\(x\)的约数个数,求\(\sum_{i=1}^{n}\sum_{j=1}^{m}d(ij)\). 题解 首先证个公式: \[d(ij) = \sum_{x|i}\sum_ ...
- 【BZOJ3994】[SDOI2015]约数个数和 莫比乌斯反演
[BZOJ3994][SDOI2015]约数个数和 Description 设d(x)为x的约数个数,给定N.M,求 Input 输入文件包含多组测试数据. 第一行,一个整数T,表示测试数据的组数 ...
- P3327-[SDOI2015]约数个数和【莫比乌斯反演】
正题 题目链接:https://www.luogu.com.cn/problem/P3327 题目大意 TTT组询问给出n,mn,mn,m,d(x)d(x)d(x)表示xxx的约数个数,求∑i=1n∑ ...
- 《算法竞赛进阶指南》数论篇(3)-组合计数,Lucas定理,Catalan数列,容斥原理,莫比乌斯反演,概率与数学期望,博弈论之SG函数
文章目录 组合计数 例题:Counting swaps Lucas定理 Cnm≡Cnmodpmmodp∗Cn/pm/p(modp)C_n^m\equiv C_{n\ mod\ p}^{m\ mod\ ...
最新文章
- php strncmp函数用法,strncmp函数用法详解
- “面试不败计划”:面试题基础一
- 中国石材胶市场需求现状调研与前景预测分析报告2022版
- Oracle原理: 行级锁和表级锁
- VTK:Filtering之PerlinNoise
- 深入理解面向对象设计的七大原则
- 02-第二章 基本类型
- python基础数据结构互转和2、8、10、16进制互转
- 常用docker命令,及一些坑
- ivew select组件 DatePicker组件的清空
- kubernetes v1.8.8中 RBAC DENY 解决办法
- 10月8日提交的结对编程工程中的经验和教训
- python对文件去重_python对文件夹内文件去重
- 怎么把原本一页的PDF拆分成单独的两页?
- 主观能动性存在的一个理论根据
- 19【推荐系统16】CTRCVR联合学习
- 申请美国大学计算机专业,美国TOP20大学计算机专业申请建议
- 数据库技术-数据库概念设计
- 1.markdown基础语法
- java安装的时候无效参数,java.sql.SQLException: 调用中无效的参数
热门文章
- 使用async关键字进行TCP server的连接
- sort+参数+linux,linux sort下令参数及用法详解
- 超低内阻mos管_FHU100N03低压MOS管保障榨汁机电路正常运行!
- 计算机系统不能更改,电脑系统时间怎么设定不能修改
- 2021 icme_2021第十届制造工程与工艺国际会议(ICMEP 2021)
- app自定义图标 vue_uniapp自定义图标组件
- oracle查看语句执行历史,AWT查看oracle历史sql语句执行
- 怎样把项目上传服务器,怎样将项目上传云服务器
- php注册界面模板,WeUI注册页面
- 自适应小波阈值去噪python_基于python的小波阈值去噪算法