【bzoj2045】双亲数
来源:互联网 发布:mac os xcode 编辑:程序博客网 时间:2024/04/30 20:58
Description
小D是一名数学爱好者,他对数字的着迷到了疯狂的程度。 我们以d = gcd(a, b)表示a、b的最大公约数,小D执著的认为,这样亲密的关系足可以用双亲来描述,此时,我们称有序数对(a, b)为d的双亲数。 与正常双亲不太相同的是,对于同一个d,他的双亲太多了 >_< 比如,(4, 6), (6, 4), (2, 100)都是2的双亲数。 于是一个这样的问题摆在眼前,对于0 < a <= A, 0 < b <= B,有多少有序数对(a, b)是d的双亲数?
Input
输入文件只有一行,三个正整数A、B、d (d <= A, B),意义如题所示。
Output
输出一行一个整数,给出满足条件的双亲数的个数。
Sample Input
5 5 2
Sample Output
3
【样例解释】
满足条件的三对双亲数为(2, 2) (2, 4) (4, 2)
HINT
对于100%的数据满足0 < A, B < 10^ 6
Source
第一届“NOIer”全国竞赛
题解
莫比乌斯反演
代码
#include<bits/stdc++.h>#define inf 100000000#define ll long long#define mo 1000000007#define N 50005using namespace std;inline int read(){ int x=0,f=1;char ch=getchar(); while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();} while (ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar(); return x*f;}int tot,A,B,n,pos,d;ll ans;int miu[1000005],sum[1000005],pri[1000005];bool mark[1000005];void getpri(){ miu[1]=1; for (int i=2;i<=1000000;i++) { if (!mark[i]){pri[++tot]=i;miu[i]=-1;} for (int j=1;j<=tot&&i*pri[j]<=1000000;j++) { mark[i*pri[j]]=1; if (i%pri[j]==0) break; else miu[i*pri[j]]=-miu[i]; } } for (int i=1;i<=1000000;i++) sum[i]=sum[i-1]+miu[i];}void work(){ n=min(A,B); for (int i=1;i<=n;i=pos+1) { pos=min(A/(A/i),B/(B/i)); ans+=(ll)(sum[pos]-sum[i-1])*(A/i)*(B/i); } printf("%lld",ans);}int main(){ A=read();B=read();d=read(); A/=d;B/=d; getpri(); work(); return 0;}
阅读全文
0 0
- 【bzoj2045】双亲数
- bzoj2045: 双亲数&bzoj1101: [POI2007]Zap
- 【bzoj2045】【双亲数】【莫比乌斯反演】
- [BZOJ2045]双亲数(莫比乌斯反演)
- bzoj 2045: 双亲数
- 【BZOJ】【P2045】【双亲数】【题解】【莫比乌斯反演】
- 数的双亲表示法结点结构定义
- 数的 双亲孩子 表示法结点结构定义
- Problem Five:[双亲数/POI Zap(多组)]
- 1101: [POI2007]Zap/2045: 双亲数/2301: [HAOI2011]Problem b
- 双亲委派
- 树的双亲存储
- 双亲树-等价类
- Java双亲委派机制
- 双亲委派模型
- 双亲委派机制总结
- 双亲委派机制
- 双亲委派模型
- cannot find Chrome binary问题解决办法
- 链
- solr介绍
- hdu2629
- C++模板
- 【bzoj2045】双亲数
- 一个SQL查询出每门课程的成绩都大于80的学生姓名
- v-bind
- 数据库知识点总结
- 浅谈Android Architecture Components
- librtmp 编译
- unity3d读写XML文件
- 设计原则-接口隔离原则
- Eclipse新建Web项目出现The superclass "javax.servlet.http.HttpServlet" was not found...