BZOJ 3994 [SDOI2015]约数个数和 莫比乌斯反演
来源:互联网 发布:js如何隐藏div 编辑:程序博客网 时间:2024/05/16 23:38
题目链接
题意
求
结论
证明参见PoPoQQQ
还有一版iwtwiioi
推导
接下来的只要处理出
这里
1. 可以直接分块
2. 注意到
即
Code
注释部分为法一分块求
#include <bits/stdc++.h>#define maxn 50000#define maxm maxn + 10typedef long long LL;using namespace std;bool check[maxm];int prime[maxm], mu[maxm], cnt[maxn];LL pre[maxm], sum[maxm], d[maxn];//void init() {// int tot = 0; mu[1] = 1;// for (int i = 2; i <= maxn; ++i) {// if (!check[i]) {// prime[tot++] = i;// mu[i] = -1;// }// for (int j = 0; j < tot; ++j) {// if (i * prime[j] > maxn) break;// check[i * prime[j]] = true;// if (i % prime[j] == 0) {// mu[i * prime[j]] = 0;// break;// }// mu[i * prime[j]] = -mu[i];// }// }// for (int i = 1; i <= maxn; ++i) {// int lim = maxn / i;// for (int j = 0; j <= lim; ++j) {// int w = i * j;// sum[w] += j;// if (w + i <= maxn) sum[w + i] -= j;// }// }// for (int i = 0; i <= 20; ++i) printf("%d ", sum[i]); printf("\n");//// for (int i = 1; i <= maxn; ++i) {// pre[i] = pre[i - 1] + mu[i];// sum[i] += sum[i - 1];// }//}void init() { int tot = 0; mu[1] = d[1] = 1; for (int i = 2; i <= maxn; ++i) { if (!check[i]) { prime[tot++] = i; mu[i] = -1, d[i] = 2, cnt[i] = 1; } for (int j = 0; j < tot; ++j) { if (i * prime[j] > maxn) break; check[i * prime[j]] = true; if (i % prime[j] == 0) { mu[i * prime[j]] = 0; cnt[i * prime[j]] = cnt[i] + 1; d[i * prime[j]] = d[i] / (cnt[i] + 1) * (cnt[i * prime[j]] + 1); break; } mu[i * prime[j]] = -mu[i]; cnt[i * prime[j]] = 1; d[i * prime[j]] = d[i] << 1; } } for (int i = 1; i <= maxn; ++i) { pre[i] = pre[i - 1] + mu[i]; sum[i] = sum[i - 1] + d[i]; }}void work() { int n, m; scanf("%d%d", &n, &m); int lim = min(n, m), le, ri; LL ans = 0; for (int i = 1; i <= lim; i = ri + 1) { le = i, ri = min(n / (n / i), m / (m / i)); ans += (pre[ri] - pre[le - 1]) * sum[n / i] * sum[m / i]; } printf("%lld\n", ans);}int main() { init(); int T; scanf("%d",&T); while (T--) work(); return 0;}
阅读全文
0 0
- [莫比乌斯反演 约数个数] BZOJ 3994 [SDOI2015]约数个数和
- 3994: [SDOI2015]约数个数和 莫比乌斯反演
- BZOJ 3994 Sdoi2015 约数个数和 莫比乌斯反演
- BZOJ 3994 [SDOI2015]约数个数和 (神定理+莫比乌斯反演)
- BZOJ 3994: [SDOI2015]约数个数和|莫比乌斯反演
- BZOJ 3994 [SDOI2015]约数个数和 (莫比乌斯反演)
- BZOJ 3994: [SDOI2015]约数个数和 莫比乌斯反演
- BZOJ 3994 [SDOI2015]约数个数和 莫比乌斯反演
- Sdoi2015约数个数和题解莫比乌斯反演
- 【bzoj3994】[SDOI2015]约数个数和 莫比乌斯反演
- BZOJ 3994 约数个数和(莫比乌斯反演)
- [BZOJ]3994 [SDOI2015]约数个数和 莫比乌斯 + 分块
- BZOJ_P3994 [SDOI2015]约数个数和(数论+莫比乌斯反演)
- 【bzoj3994】[SDOI2015]约数个数和 线性筛法+莫比乌斯反演+数论分块
- [BZOJ3994][SDOI2015]约数个数和(莫比乌斯反演)
- 【BZOJ3994】【SDOI2015】约数个数和(莫比乌斯反演)
- 洛谷P3327:[SDOI2015]约数个数和 (莫比乌斯反演)
- 洛谷 P3327 [SDOI2015]约数个数和 (莫比乌斯反演)
- 设计模式——装饰模式
- call和apply的区别
- 使用Python对音频进行频谱分析
- 各编译工具说明
- python---把tab.py的tab键自动补齐命令脚本,放入包目录下,python所有文件都可以使用
- BZOJ 3994 [SDOI2015]约数个数和 莫比乌斯反演
- HDU
- 云服务器上iis部署环境搭建
- 树莓派3 利用frp内网穿透搭建
- LINUX驱动小知识
- Python3.5连接Mysql
- 函数返回数组指针的几种声明方式
- RestFul Api 定义流程规范
- c++记录