整理的算法模板合集: 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. 龙哥的问题

【数学专题】莫比乌斯反演与积性函数相关推荐

  1. 解题报告(十五)莫比乌斯反演与积性函数(ACM / OI)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 好久没写反演了,写些水题慢慢捡起来 目录 A. (BZOJ 2440: 中山市选2011 )完全平方数 ...

  2. 【算法讲7:积性函数(下)】⌈ 加性函数 ⌋ 与 ⌈ 积性函数 ⌋ 与 ⌈ 狄利克雷卷积 ⌋ 详细介绍

    [算法讲7:积性函数(下)] 前置 补充 ⌈\lceil⌈积性函数⌋\rfloor⌋ (乘性函数) 四个最基本的定义 关于积性函数的基本性质 性质一:f(1) 性质二:积性函数的各种传递 性质三:整数 ...

  3. 专题·莫比乌斯函数与欧拉函数【including 整除分块,积性函数,狄利克雷卷积,欧拉函数,莫比乌斯函数,莫比乌斯反演

    初见安~又是好久没写博客了--加上CSP才炸了一波. 目录 一.整除分块 题解 二.积性函数 三.狄利克雷卷积 四.欧拉函数 五.莫比乌斯函数(mu) 六.莫比乌斯反演 一.整除分块 看个例题:洛谷P ...

  4. HDU 6134 2017 多校训练:Battlestation Operational(莫比乌斯反演+积性函数)

    实在太长了直接放题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=6134 这题就是求 考虑当Gcd(i, j)==1时,除了j为1的情况,其它时候i/j一 ...

  5. 从积性函数到莫比乌斯反演

    积性函数 积性函数:对于数论函数 fff ,若任意互质的 p,qp,\ qp, q 都有 f(pq)=f(p)f(q)f(pq)=f(p)f(q)f(pq)=f(p)f(q) ,则称 fff 是积性函 ...

  6. 积性函数、狄利克雷卷积、莫比乌斯反演

    狄利克雷卷积 定义: 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​) 计算的时候可以把枚举约数转换 ...

  7. 【算法专题】积性函数

    [参考] ★浅谈一类积性函数的前缀和 by skywalkert 任之洲数论函数.pdf 论逗逼的自我修养之寒假颓废记 by jiry_2 杜教筛 [学习笔记][更新中] by Candy? [变化技 ...

  8. 数学--数论--积性函数(初步)

    一.定义 积性函数指对于所有互质的整数a和b有性质f(ab)=f(a)f(b)的数论函数. 二.常见的积性函数 φ(n) -欧拉函数 μ(n) -莫比乌斯函数,关于非平方数的质因子数目 gcd(n,k ...

  9. 积性函数欧拉函数莫比乌斯函数

    积性函数 (积性函数). 如果算术函数fff对任意两个互素的正整数a和b,f(ab)=f(a)f(b)f(ab)=f(a)f(b)f(ab)=f(a)f(b),则fff被称为积性函数(或乘性函数):如 ...

最新文章

  1. phpexcel_cell 获取表格样式_Java 操作Word表格——创建嵌套表格、添加/复制表格行或列、设置表格是否禁止跨页断行...
  2. 在浏览器中输入 Google.com 回车之后发生了什么?
  3. 控制面板的cpl程序列表
  4. 【转】如何修改Chrome缓存目录的地址
  5. linux fedora14 u盘运行,怎么把fedora 14 装进U盘里
  6. Facebook 推出多模态通用模型 FLAVA,吊打 CLIP 平均十个点!
  7. 更新无限无线连接更新服务器,02-H3C WBC560多业务无线控制器软件升级操作指导...
  8. oracle 批量杀死 死锁进程
  9. java实现文件夹复制_Java实现文件夹复制
  10. 持久化存储-对象序列化(摘自网络)
  11. java astar_JAVA-Astar算法实现
  12. 未来教育软件计算机二级不能评分怎么办,为什么计算机二级软件打不开
  13. 【交叉编译】配置交叉编译工具链
  14. shell基础脚本命令记录
  15. win10 教育版 激活方法
  16. ml-agents与tensorflow结合的先关操作文档
  17. Tensorflow 中文语音识别
  18. 微信怎么自动加好友java_iOS逆向开发之微信自动添加好友功能
  19. NYOJ71——独木舟上的旅行(贪心)
  20. 探索 Android Q:位置权限

热门文章

  1. 目标检测 | 盘点目标检测中的特征融合技巧(根据YOLO v4总结)
  2. 图像降维之MDS特征抽取方法
  3. 推特雪花算法 java实现
  4. CentOS 7 中 Systemd详解
  5. new File(String Path)加载资源问题
  6. canvas-绘制矩形-读书笔记
  7. 编译可在Nexus5上运行的CyanogenMod13.0 ROM(基于Android6.0)
  8. Python快速学习02:基本数据类型 序列
  9. 编程小问题系列(6)——新年第一帖: 关于Silverlight在VS2010RC下无法正常运行的问题...
  10. java获取get请求返回_Java中处理调用第三方接口(post/get),该如何处理,返回的数据如何处理...