hdu1695 GCD
来源:互联网 发布:怎么看淘宝店铺的收支 编辑:程序博客网 时间:2024/06/14 00:59
hdu1695—— GCD
莫比乌斯函数的基础应用。
我的做法是每次都把重复的减去。可以写成最后再一起减,写的时候感觉会更加有条理。
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define N 100010#define LL long long intint vis[N], mu[N], cnt, prime[N];void Init(){ memset(vis,0,sizeof(vis)); mu[1] = 1; cnt = 0; for(int i=2; i<N; i++) { if(!vis[i]) { prime[cnt++] = i; mu[i] = -1; } for(int j=0; j<cnt&&i*prime[j]<N; j++) { vis[i*prime[j]] = 1; if(i%prime[j]) mu[i*prime[j]] = -mu[i]; else { mu[i*prime[j]] = 0; break; } } }}int main(){ Init(); int T, a, b, c, d, k, cas=1; scanf("%d", &T); long long int ans; while(T--) { ans=0; scanf("%d%d%d%d%d", &a, &b, &c, &d, &k); if(k==0) { printf("Case %d: 0\n", cas++); continue; } int Min=min(b, d); for(int i=1; i*k<=Min;i++) { int f=i*k; int x=b/f, y=d/f; int num=min(x, y); if(num<=1) ans+=(long long int)((LL)mu[i]*(LL)x*(LL)y); else ans+=(long long int)((LL)mu[i]*((LL)x*(LL)y-(LL)(num-1)*(LL)(num)/2)); } printf("Case %d: %I64d\n", cas++, ans); } return 0;}
因为强制转换时的问题wa了很多次。注意结果为负数时的取模问题。
阅读全文
0 0
- HDU1695 GCD
- HDU1695 GCD
- Hdu1695 GCD
- hdu1695 GCD
- hdu1695 GCD
- Hdu1695 (GCD) 终于写完了~
- hdu1695 GCD 【欧拉函数+容斥】
- HDU1695 GCD(莫比乌斯反演)
- #HDU1695#GCD(容斥 + 分解质因数)
- hdu1695 gcd 莫比乌斯反演
- [hdu1695][莫比乌斯反演]Gcd
- hdu1695 GCD (容斥原理+欧拉函数)
- hdu1695 GCD 欧拉函数+容斥原理
- HDU1695 GCD 数论之 莫比乌斯反演
- HDU1695-GCD(数论-欧拉函数-容斥)
- hdu1695 GCD(莫比乌斯反演)
- hdu1695--GCD(欧拉函数+容斥原理)
- hdu1695 GCD(容斥原理+欧拉函数)
- 解决html、php中文乱码问题
- Linux tcpdump抓包命令详解
- HDU
- Shell脚本的学习&&sed
- 马拦过河卒
- hdu1695 GCD
- NYISTSWOJ 5864 题目不详(好坑的题...)
- MyBatis 示例之存储过程(一)
- Linux的三个时间参数
- linux中的日志服务
- linux卸载openjdk
- 莫比乌斯函数模版
- 4. 对象的组合
- 华为机试——句子逆序