[BZOJ2005][NOI2010]能量采集(莫比乌斯反演)
来源:互联网 发布:云计算iaas paas saas 编辑:程序博客网 时间:2024/06/02 05:39
题意:给定
容易推出,原式可化为
而关键就是求
原式
而求
补充一点:如果有多组询问,那么:
代码:
#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;inline int read() { int res = 0; bool bo = 0; char c; while (((c = getchar()) < '0' || c > '9') && c != '-'); if (c == '-') bo = 1; else res = c - 48; while ((c = getchar()) >= '0' && c <= '9') res = (res << 3) + (res << 1) + (c - 48); return bo ? ~res + 1 : res;}typedef long long ll;const int MaxN = 1e5, N = MaxN + 5;int n, m, tot, pri[N], miu[N], sum[N];bool mark[N];void sieve() { int i, j; mark[0] = mark[1] = 1; miu[1] = 1; for (i = 2; i <= MaxN; i++) { if (!mark[i]) pri[++tot] = i, miu[i] = -1; for (j = 1; j <= tot; j++) { if (1ll * i * pri[j] > MaxN) break; mark[i * pri[j]] = 1; if (i % pri[j] == 0) break; else miu[i * pri[j]] = -miu[i]; } } for (i = 1; i <= MaxN; i++) sum[i] = sum[i - 1] + miu[i];}ll solve(int n, int m) { int i; ll ans = 0; for (i = 1; i <= min(n, m);) { int nxt = min(n / (n / i), m / (m / i)); ans += 1ll * (sum[nxt] - sum[i - 1]) * (n / i) * (m / i); i = nxt + 1; } return ans;}int main() { int i; n = read(); m = read(); ll ans = 0; sieve(); for (i = 1; i <= min(n, m); i++) ans += solve(n / i, m / i) * i; cout << (ans - 1ll * n * m) * 2 + 1ll * n * m << endl; return 0;}
阅读全文
0 0
- [BZOJ2005][NOI2010]能量采集(莫比乌斯反演)
- [BZOJ2005][NOI2010]能量采集(莫比乌斯反演)
- bzoj2005: [Noi2010]能量采集 莫比乌斯反演
- 【bzoj2005】[Noi2010]能量采集 莫比乌斯反演
- [bzoj2005][莫比乌斯反演][Noi2010]能量采集
- 【BZOJ2005】【NOI2010】能量采集(莫比乌斯反演,容斥原理)
- Bzoj 2005: [Noi2010]能量采集(莫比乌斯反演)
- BZOJ 2005 NOI2010 能量采集 莫比乌斯反演
- BZOJ 2005: [Noi2010]能量采集(莫比乌斯反演)
- 【NOI2010】【BZOJ2005】能量采集
- [BZOJ2005][Noi2010]能量采集
- [BZOJ2005][Noi2010]能量采集
- bzoj2005【NOI2010】能量采集
- Bzoj2005[Noi2010]能量采集
- [bzoj2005][Noi2010]能量采集
- 【NOI2010】bzoj2005 能量采集
- BZOJ2005 [Noi2010]能量采集
- bzoj2005[Noi2010]能量采集
- 数据存储(无数据库版)之一:存储为JSON
- JVM之早期(编译器)优化
- 八皇后
- GitHub:(2)Windows上安装与使用 Git
- 实习第二天
- [BZOJ2005][NOI2010]能量采集(莫比乌斯反演)
- JAVA窗口编程笔记
- HTML <li> 标签实现不换行
- [Python]网络爬虫(二):利用urllib通过指定的URL抓取网页内容
- 前端模块化,AMD与CMD的区别
- 简单封装okhttp的get和post方法
- Android:前端与原生混合开发尝试
- 克罗内克积
- STM32 IO口的8中配置方式解读