【数学专题】莫比乌斯反演与积性函数
整理的算法模板合集: ACM模板
点我看算法全家桶系列!!!
实际上是一个全新的模板整合计划
目录
- 莫比乌斯反演
- AcWing 2702. problem b
- AcWing 1358. 约数个数和(莫比乌斯反演经典、双上限整除分块)
- 积性函数
- AcWing 221. 龙哥的问题
莫比乌斯反演
AcWing 2702. problem b
自己推导:
直接代入公式:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<queue>
#include<cmath>
#include<cstring>using namespace std;
const int N = 500007, M = 500007,INF = 0x3f3f3f3f;
typedef long long ll;int read()
{int x = 0, f = 1;char ch = getchar();while(ch > '9' || ch < '0'){if(ch == '-')f = -1; ch = getchar();}while(ch <= '9' && ch >= '0'){x = x * 10 + ch - '0';ch = getchar();}return x * f;
}int a, b, c, d, k;int mu[N];
int primes[N], cnt;
bool vis[N];void get_mu(int n)
{memset(vis, 0, sizeof vis);memset(mu, 0, sizeof mu);cnt = 0, mu[1] = 1;for(int i = 2; i <= n; ++ i){if(vis[i] == 0){primes[ ++ cnt] = i;mu[i] = -1;}for(int j = 1; j <= cnt && i * primes[j] <= n; ++ j){vis[primes[j] * i] = 1;if(i % primes[j] == 0) break;mu[i * primes[j]] -= mu[i];}}for(int i = 1; i <= n; ++ i)mu[i] += mu[i - 1];
}int solve(int n, int m)
{n /= k, m /= k;int res = 0;for(int i = 1, j; i <= min(n, m); i = j + 1){j = min(n / (n / i), m / ( m / i));//j是右边界,这里的值都是ires += (mu[j] - mu[i - 1]) * (n / i) * (m / i);}return res;
}
int n, m;int main()
{get_mu(N - 1);scanf("%d", &n);for(int i = 1; i <= n; ++ i){a = read(), b = read(), c = read(), d = read(), k = read();int ans = solve(b, d) - solve(b, c - 1) - solve(a - 1, d) + solve(a - 1, c - 1);printf("%d\n", ans);}return 0;
}
AcWing 1358. 约数个数和(莫比乌斯反演经典、双上限整除分块)
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>using namespace std;const int N = 50007;typedef long long ll;int n, m, t;
int primes[N];
ll res;
bool vis[N];
int mu[N];
int sum[N];
int cnt;
int H[N];int g(int k, int x) {return k / (k / x);}void init(int n)
{mu[1] = 1;for(int i = 2; i <= n; ++ i) {if(vis[i] == 0) {primes[ ++ cnt] = i;mu[i] = -1;}for(int j = 1; j <= cnt && primes[j] * i <= n; ++ j) {vis[i * primes[j]] = true;if(i % primes[j] == 0) break;mu[i * primes[j]] = -mu[i];}}for(int i = 1; i <= n; ++ i) sum[i] = sum[i - 1] + mu[i];for(int i = 1; i <= n; ++ i) {for(int l = 1, r; l <= i; l = r + 1) {r = min(i, g(i, l));H[i] += (r - l + 1) * (i / l);}}
}int main()
{cin >> t;init(N - 1);while(t -- ) {res = 0;scanf("%d%d", &n, &m);int k = min(n, m);for(int l = 1, r; l <= k; l = r + 1) {r = min(k, min(g(n, l), g(m, l)));res += ((ll)sum[r] - sum[l - 1]) * H[n / l] * H[m / l];}printf("%lld\n", res);}return 0;
}
积性函数
证明 μ(x)\mu(x)μ(x) 是积性函数
a=p1α1×p2α2×⋯×pnαka=p_1^{\alpha_1}\times p_2^{\alpha_2}\times \cdots \times p_n^{\alpha_k}a=p1α1×p2α2×⋯×pnαk
b=p1β1×p2β2×⋯×pnβtb=p_1^{\beta_1}\times p_2^{\beta_2}\times \cdots \times p_n^{\beta_t}b=p1β1×p2β2×⋯×pnβt
a×b=p1α1×p2α2×⋯×pnαk×p1β1×p2β2×⋯×pnβta\times b=p_1^{\alpha_1}\times p_2^{\alpha_2}\times \cdots \times p_n^{\alpha_k}\times p_1^{\beta_1}\times p_2^{\beta_2}\times \cdots \times p_n^{\beta_t}a×b=p1α1×p2α2×⋯×pnαk×p1β1×p2β2×⋯×pnβt
若 μ(a)=0\mu(a)=0μ(a)=0或μ(b)=0\mu(b)=0μ(b)=0,则μ(a×b)=0\mu(a\times b)=0μ(a×b)=0(因为均含αor β>1\alpha\ \text{or}\ \beta>1α or β>1)
即μ(a×b)=μ(a)×μ(b)\mu(a\times b)=\mu(a) \times \mu(b)μ(a×b)=μ(a)×μ(b)
若 μ(a)≠0\mu(a)≠0μ(a)=0或μ(b)≠0\mu(b)≠0μ(b)=0,则μ(a×b)=(−1)k+t=(−1)k×(−1)t=μ(a)×μ(b)\mu(a\times b)=(-1)^{k+t}=(-1)^{k}\times(-1)^t=\mu(a) \times \mu(b)μ(a×b)=(−1)k+t=(−1)k×(−1)t=μ(a)×μ(b)
常见积性函数
- φ(n) -欧拉函数
- μ(n) -莫比乌斯函数,关于非平方数的质因子数目
- gcd(n,k) -最大公因子,当k固定的情况
- d(n) -n的正因子数目
- σ(n) -n的所有正因子之和
- σk(n) - 因子函数,n的所有正因子的k次幂之和,当中k可为任何复数。
- 1(n) -不变的函数,定义为 1(n) = 1 (完全积性)
- Id(n) -单位函数,定义为 Id(n) = n(完全积性)
- Idk(n) -幂函数,对于任何复数、实数k,定义为Idk(n) = n^k (完全积性)
- ε(n) -定义为:若n = 1,ε(n)=1;若 n > 1,ε(n)=0。别称为“对于狄利克雷卷积的乘法单位”(完全积性)
- λ(n) -刘维尔函数,关于能整除n的质因子的数目
- γ(n),定义为γ(n)=(-1)^ω(n),在此加性函数ω(n)是不同能整除n的质数的数目
- 另外,所有狄利克雷特征均是完全积性的
AcWing 221. 龙哥的问题
【数学专题】莫比乌斯反演与积性函数相关推荐
- 解题报告(十五)莫比乌斯反演与积性函数(ACM / OI)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 好久没写反演了,写些水题慢慢捡起来 目录 A. (BZOJ 2440: 中山市选2011 )完全平方数 ...
- 【算法讲7:积性函数(下)】⌈ 加性函数 ⌋ 与 ⌈ 积性函数 ⌋ 与 ⌈ 狄利克雷卷积 ⌋ 详细介绍
[算法讲7:积性函数(下)] 前置 补充 ⌈\lceil⌈积性函数⌋\rfloor⌋ (乘性函数) 四个最基本的定义 关于积性函数的基本性质 性质一:f(1) 性质二:积性函数的各种传递 性质三:整数 ...
- 专题·莫比乌斯函数与欧拉函数【including 整除分块,积性函数,狄利克雷卷积,欧拉函数,莫比乌斯函数,莫比乌斯反演
初见安~又是好久没写博客了--加上CSP才炸了一波. 目录 一.整除分块 题解 二.积性函数 三.狄利克雷卷积 四.欧拉函数 五.莫比乌斯函数(mu) 六.莫比乌斯反演 一.整除分块 看个例题:洛谷P ...
- HDU 6134 2017 多校训练:Battlestation Operational(莫比乌斯反演+积性函数)
实在太长了直接放题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=6134 这题就是求 考虑当Gcd(i, j)==1时,除了j为1的情况,其它时候i/j一 ...
- 从积性函数到莫比乌斯反演
积性函数 积性函数:对于数论函数 fff ,若任意互质的 p,qp,\ qp, q 都有 f(pq)=f(p)f(q)f(pq)=f(p)f(q)f(pq)=f(p)f(q) ,则称 fff 是积性函 ...
- 积性函数、狄利克雷卷积、莫比乌斯反演
狄利克雷卷积 定义: f∗g(n)=∑d∣nf(d)g(nd)f*g(n)=\sum_{d|n}f(d)g(\frac nd)f∗g(n)=d∣n∑f(d)g(dn) 计算的时候可以把枚举约数转换 ...
- 【算法专题】积性函数
[参考] ★浅谈一类积性函数的前缀和 by skywalkert 任之洲数论函数.pdf 论逗逼的自我修养之寒假颓废记 by jiry_2 杜教筛 [学习笔记][更新中] by Candy? [变化技 ...
- 数学--数论--积性函数(初步)
一.定义 积性函数指对于所有互质的整数a和b有性质f(ab)=f(a)f(b)的数论函数. 二.常见的积性函数 φ(n) -欧拉函数 μ(n) -莫比乌斯函数,关于非平方数的质因子数目 gcd(n,k ...
- 积性函数欧拉函数莫比乌斯函数
积性函数 (积性函数). 如果算术函数fff对任意两个互素的正整数a和b,f(ab)=f(a)f(b)f(ab)=f(a)f(b)f(ab)=f(a)f(b),则fff被称为积性函数(或乘性函数):如 ...
最新文章
- phpexcel_cell 获取表格样式_Java 操作Word表格——创建嵌套表格、添加/复制表格行或列、设置表格是否禁止跨页断行...
- 在浏览器中输入 Google.com 回车之后发生了什么?
- 控制面板的cpl程序列表
- 【转】如何修改Chrome缓存目录的地址
- linux fedora14 u盘运行,怎么把fedora 14 装进U盘里
- Facebook 推出多模态通用模型 FLAVA,吊打 CLIP 平均十个点!
- 更新无限无线连接更新服务器,02-H3C WBC560多业务无线控制器软件升级操作指导...
- oracle 批量杀死 死锁进程
- java实现文件夹复制_Java实现文件夹复制
- 持久化存储-对象序列化(摘自网络)
- java astar_JAVA-Astar算法实现
- 未来教育软件计算机二级不能评分怎么办,为什么计算机二级软件打不开
- 【交叉编译】配置交叉编译工具链
- shell基础脚本命令记录
- win10 教育版 激活方法
- ml-agents与tensorflow结合的先关操作文档
- Tensorflow 中文语音识别
- 微信怎么自动加好友java_iOS逆向开发之微信自动添加好友功能
- NYOJ71——独木舟上的旅行(贪心)
- 探索 Android Q:位置权限
热门文章
- 目标检测 | 盘点目标检测中的特征融合技巧(根据YOLO v4总结)
- 图像降维之MDS特征抽取方法
- 推特雪花算法 java实现
- CentOS 7 中 Systemd详解
- new File(String Path)加载资源问题
- canvas-绘制矩形-读书笔记
- 编译可在Nexus5上运行的CyanogenMod13.0 ROM(基于Android6.0)
- Python快速学习02:基本数据类型 序列
- 编程小问题系列(6)——新年第一帖: 关于Silverlight在VS2010RC下无法正常运行的问题...
- java获取get请求返回_Java中处理调用第三方接口(post/get),该如何处理,返回的数据如何处理...