HDU-1695-GCD
来源:互联网 发布:byte数组copy 编辑:程序博客网 时间:2024/06/06 17:00
ACM模版
描述
题解
莫比乌斯反演入门题,给大家推荐一个写的十分详细的博客,由浅入深,大赞!__proto__’s blog,让我更加清晰的认识了莫比乌斯反演的用处,感谢大佬!
代码
#include <iostream>#include <cstring>#include <cstdio>using namespace std;const int MAXN = 1e5 + 7;int a, b, c, d, k, cnt;int pri[MAXN];int miu[MAXN];bool vis[MAXN];void init(){ memset(pri, 0, sizeof(pri)); memset(miu, 0, sizeof(miu)); memset(vis, 0, sizeof(vis)); miu[1] = 1; cnt = 0; for (int i = 2; i < MAXN; i++) { if (!vis[i]) { pri[cnt++] = i; miu[i] = -1; } for (int j = 0; j < cnt && i * pri[j] < MAXN; j++) { vis[i * pri[j]] = 1; if (i % pri[j]) { miu[i * pri[j]] = -miu[i]; } else { miu[i * pri[j]] = 0; break; } } }}int main(){ init(); int T; cin >> T; for (int i = 1; i <= T; i++) { printf("Case %d: ", i); scanf("%d%d%d%d%d", &a, &b, &c, &d, &k); if (k == 0) { puts("0"); continue; } b /= k; d /= k; int t = min(b, d); long long ans1 = 0, ans2 = 0; for (int i = 1; i <= t; i++) { ans1 += (long long)miu[i] * (b / i) * (d / i); } for (int i = 1; i <= t; i++) { ans2 += (long long)miu[i] * (t / i) * (t / i); } printf("%lld\n", ans1 - (ans2 >> 1)); } return 0;}
阅读全文
0 0
- HDU 1695 GCD 数论
- hdu 1695 GCD
- hdu 1695 GCD
- HDU 1695 GCD (数论)
- hdu 1695 GCD
- HDU 1695 GCD
- HDU 1695 GCD
- HDU - 1695 GCD
- HDU 1695 GCD
- HDU 1695 GCD
- HDU 1695 GCD
- HDU 1695 GCD
- HDU 1695 GCD
- hdu 1695 GCD
- 【HDU】 1695 GCD
- HDU 1695 GCD
- HDU 1695GCD
- HDU 1695 GCD
- 递归-OpenJudge-8758:2de
- 深入理解GC ——MinorGC\MajorGC\FullGC
- extjs tree 展开指定层级
- 学习日志(java类与方法)
- 动态代理与AOP(1)
- HDU-1695-GCD
- 项目经验——svn认证失败解决方案
- 实验一虚拟软件 VMware Workstation 8.0.4的安装过程
- md5加密 原理 js 前后端使用
- Apache Spark 2.2.0 中文文档
- HDU5950 (2016沈阳现场赛)
- 458. Poor Pigs
- java版简易计算器
- 矩阵归零