SDOI2015 约数个数和(莫比乌斯反演经典、双上限整除分块)超详细笔记
整理的算法模板合集: ACM模板
点我看算法全家桶系列!!!
实际上是一个全新的精炼模板整合计划
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;
}
SDOI2015 约数个数和(莫比乌斯反演经典、双上限整除分块)超详细笔记相关推荐
- 【BZOJ3994】[SDOI2015]约数个数和 莫比乌斯反演
[BZOJ3994][SDOI2015]约数个数和 Description 设d(x)为x的约数个数,给定N.M,求 Input 输入文件包含多组测试数据. 第一行,一个整数T,表示测试数据的组数 ...
- 【bzoj3994】[SDOI2015]约数个数和 莫比乌斯反演
题目描述 设d(x)为x的约数个数,给定N.M,求 输入 输入文件包含多组测试数据. 第一行,一个整数T,表示测试数据的组数. 接下来的T行,每行两个整数N.M. 输出 T行,每行一个整数,表示你 ...
- BZOJ 3994: [SDOI2015]约数个数和 [莫比乌斯反演 转化]
2015 题意:\(d(i)\)为i的约数个数,求\(\sum\limits_{i=1}^n \sum\limits_{j=1}^m d(ij)\) \(ij\)都爆int了.... 一开始想容斥一下 ...
- BZOJ 3994 [SDOI2015]约数个数和 (莫比乌斯反演)
题目大意:略 洛谷传送门 首先要知道这样一个公式不知道这个公式这道题还怎么做... $d(ij)=\sum\limits_{x=1}^{i} \sum\limits_{y=1}^{j}[gcd(x,y ...
- P3327 [SDOI2015]约数个数和 (mobius反演)
P3327 [SDOI2015]约数个数和 推导过程 求∑i=1n∑j=1md(ij)\sum_{i = 1} ^{n} \sum_{j = 1} ^{m} d(ij)∑i=1n∑j=1md(ij ...
- [SDOI2015]约数个数和【莫比乌斯反演】
[SDOI2015]约数个数和 题意:\(d(x)\)为\(x\)的约数个数,求\(\sum_{i=1}^n\sum{j=1}^md(ij)\) 由结论得\[ans=\sum_{i=1}^n\sum_ ...
- [bzoj3994] [SDOI2015]约数个数和
Description 设d(x)为x的约数个数,给定N.M,求 \(\sum_{i=1}^N\sum_{j=1}^Md(ij)\) Input 输入文件包含多组测试数据. 第一行,一个整数T,表示测 ...
- luogu P3327 [SDOI2015]约数个数和(rng58-clj等式)
luogu P3327 [SDOI2015]约数个数和(rng58-clj等式) 题目大意 设d(x)d(x)d(x)为x的因子的个数,给出N和M求 ∑i=1n∑j=1md(i,j)\sum_{i=1 ...
- 洛谷 [SDOI2015]约数个数和 解题报告
[SDOI2015]约数个数和 题目描述 设\(d(x)\)为\(x\)的约数个数,给定\(N,M\),求$ \sum\limits^N_{i=1}\sum\limits^M_{j=1}d(ij)$ ...
最新文章
- docker 卸载镜像_Centos7 安装 Docker
- asp.net在线预览txt文件(简单实现)
- 敏捷与DevOps整合之道
- azkaban的操作指南
- 黑马程序员--C语言基础之--sizeof()运算符的使用以及注意
- matlab当前目录下的相对路径
- LeetCode 343. 整数拆分(动态规划)
- 批处理脚本学习笔记——程序猿版
- 尘福通:智慧城市建设、运营、演进路径思考
- JAVA 面向对象和集合知识点总结
- 鸿蒙分期靠谱吗,花呗借呗“陷阱”正式被确认,这两个禁忌不要触碰,别说没提醒你...
- MPU和MMU、MPU和MCU的区别
- 27岁IE浏览器正式退役
- 企业承担社会责任的必要性
- android陌陌权限申请实现,Hook实现Android 微信,陌陌 ,探探位置模拟
- android windows 无线视频传输,基于Android端到端实时无线视频传输系统
- 数字金字塔 (15 分)
- 【工具】注重效率、易于管理的系统重装和设置
- 深圳立仪科技进军2021年DME中国(东莞)机械展会
- 关于python打包py文件成exe文件