【bzoj1101】[POI2007]Zap 莫比乌斯反演
来源:互联网 发布:无线的访客网络 编辑:程序博客网 时间:2024/05/21 17:29
Description
FGD正在破解一段密码,他需要回答很多类似的问题:对于给定的整数a,b和d,有多少正整数对x,y,满足x<=a,y<=b,并且gcd(x,y)=d。作为FGD的同学,FGD希望得到你的帮助。
Input
第一行包含一个正整数n,表示一共有n组询问。(1<=n<= 50000)接下来n行,每行表示一个询问,每行三个正整数,分别为a,b,d。(1<=d<=a,b<=50000)
Output
对于每组询问,输出到输出文件zap.out一个正整数,表示满足条件的整数对数。
Sample Input
24 5 26 4 3
Sample Output
32
HINT
对于第一组询问,满足条件的整数对有(2,2),(2,4),(4,2)。对于第二组询问,满足条件的整数对有(6,3),(3,3)。
Source
求
也就是
根据莫比乌斯反演:
两个整除可以根号时间内算出来(和这个挺像->【bzoj1257】[CQOI2007]余数之和sum 数论乱搞,因为两个区间要取相交的,所以代码里右区间端点要取min),要预处理出来
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cmath>using namespace std;const int SZ = 1000010;typedef long long LL;bool vis[SZ];int pri[SZ],mu[SZ],sum_mu[SZ];int n,m;void get_mu(){ mu[1] = 1; for(int i = 2,tot = 0;i <= 50010;i ++) { if(!vis[i]) pri[++ tot] = i,mu[i] = -1; for(int j = 1,m;j <= tot && (m = i * pri[j]) <= 50010;j ++) { vis[m] = 1; if(i % pri[j] == 0) { mu[m] = 0; break; } else mu[m] = -mu[i]; } } for(int i = 1;i <= 50010;i ++) sum_mu[i] = sum_mu[i - 1] + mu[i];}int main(){ int T; scanf("%d",&T); get_mu(); while(T --) { int d; scanf("%d%d%d",&n,&m,&d); n /= d; m /= d; LL ans = 0; for(int i = 1,r;i <= min(n,m);i = r + 1) { r = min(n / (n / i),m / (m / i)); ans += (LL) (sum_mu[r] - sum_mu[i - 1]) * (n / i) * (m / i); } printf("%lld\n",ans); } return 0;}
0 0
- bzoj1101: [POI2007]Zap 莫比乌斯反演
- BZOJ1101: [POI2007]Zap 莫比乌斯反演
- 【bzoj1101】[POI2007]Zap 莫比乌斯反演
- [BZOJ1101][POI2007]Zap(莫比乌斯反演)
- 莫比乌斯反演 bzoj1101【Poi2007】Zap
- bzoj1101 [POI2007]Zap 莫比乌斯反演
- [莫比乌斯反演] BZOJ1101: [POI2007]Zap
- bzoj1101 [POI2007]ZAP-Queries(莫比乌斯反演)
- 【莫比乌斯反演】BZOJ1101 [POI2007]Zap
- bzoj1101[POI2007]Zap-莫比乌斯反演
- BZOJ1101 [POI2007]Zap 【莫比乌斯反演】
- 【BZOJ】【P1101】【POI2007】【Zap】【题解】【莫比乌斯反演】
- BZOJ 1101 [POI2007]Zap 莫比乌斯反演
- BZOJ 1101: [POI2007]Zap|莫比乌斯反演
- [莫比乌斯反演] BZOJ 1101 [POI2007]Zap
- BZOJ 1101: [POI2007]Zap【莫比乌斯反演
- bzoj 1101 [POI2007]Zap 莫比乌斯反演
- BZOJ 1101: [POI2007]Zap 莫比乌斯反演
- hdoj2049不容易系列之(4)——考新郎
- 生产者理论概述
- Jquery $.ajax请求详解及ajax全局变量分析
- hdu 3810 Magina 5亿的背包,队列优化DP
- Spark on Hadoop Yarn 部署
- 【bzoj1101】[POI2007]Zap 莫比乌斯反演
- Select选择后,刷新页面保存上一次选择内容
- 使用XML文件输入和输出和YAML文件 目标 你会发现以下问题的答案: 如何打印和阅读文本条目文件和OpenCV使用YAML或XML文件? 如何为OpenCV做同样的数据结构?
- Android加壳native实现
- jquery全局ajax参数详细执行分析-$.ajax竟然可以这样用!
- node环境搭建安装nmp
- POJ 1066 Treasure Hunt(浮点判断线段交点)
- 傅立叶变换- 阐释与--理解
- SQL中 patindex函数的用法