莫比乌斯函数
hesorchen
这个作者很懒,什么都没留下…
展开
-
欧拉筛线性处理莫比乌斯函数
欧拉筛线性处理莫比乌斯函数 代码 #include <bits/stdc++.h> using namespace std; const int N = 1e6 + 5; int prime[N]; bool vis[N]; int mobius[N]; void init() { int times = 0; for (int i = 2; i < N; i++) { if (!vis[i]) prime[++prim原创 2021-09-22 10:44:54 · 166 阅读 · 0 评论 -
牛客数字染色莫比乌斯容斥
题目 数字染色 给出一个正整数序列,求有多少子序列的gcd不为1。 求解 假设子序列gcd为x,那么只需求出x的倍数的数量m,gcd为x的子序列数量即为2m−12^m-12m−1。 这样可以求出 gcd分别为2的倍数、3的倍数、4的倍数… 的方案数,剩下的就是容斥了,比如6,计算2的倍数、3的倍数的时候重复算了,那么要减去。 代码: #include <bits/stdc++.h> using namespace std; const int N = 1e5 + 5; int mul[N];原创 2021-09-21 18:57:54 · 189 阅读 · 0 评论