test 8 Problem A: [noip2016十连测第八场]神炎皇 (数论+gcd两个性质的证明)
2016-10-24 16:26
417 查看
传送门
题解:数论。
我们要求(a+b)|ab 的个数。首先考虑枚举gcd(a,b)=d ,则必须满足(a'+b')d|a'*b'*d^2 ,那么(a'+b')|a'*b'*d,因为(a'+b')与a'b'互质,所以(a'+b')|d.那么在保证gcd(a,b)==1的情况下,(a+b)为什么与ab互质呢?
反证法: 假设(a+b)与ab 不互质,那么gcd((a+b),ab)==m (m!=1)
则有m|ab,(m|a)||(m|b)
假设m|a,又因为 m|(a+b) ,所以m|b.也就是(a,b)必然存在一个质因子p.
与gcd(a,p)=1矛盾,所以 gcd(a,b)==1,gcd(a+b,ab)==1
又因为(a'+b')*d<=n,(a'+b')|d ,所以d=k1(a'+b') (k1>=1) ,所以 (a'+b')<=sqrt(n)
不妨枚举(a'+b')==k k*k*k1<=n k1<=n/(k^2) 则合法的d有n/(k^2)个,再考虑(a'+b')==k的(a',b')的个数,应该有phi(k)个。
为什么呢? 我们要求gcd(a',b')==1时(a',b')的个数。这时有一个结论gcd(a+b,b)==1,那么gcd(a,b)==1.
因为phi(k)正好就是gcd(a'+b',b)==1的个数,所以我们只需要证明上述的结论即可。
还是利用反证法。
当gcd(a+b,b)=1时,假设gcd(a,b)=m (m!=1)
那么a=pm ,b=qm (a+b)=(q+p)m 那么如果这样成立的话gcd(a+b,b)=m,与gcd(a+b,b)==1矛盾,所以得证。
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #define N 10000003 #define LL long long using namespace std; LL p ,prime ,phi ; LL ans,n; int main() { scanf("%I64d",&n); LL m=sqrt(n); prime[1]=1; for (LL i=2;i<=m;i++) { if (!p[i]) prime[++prime[0]]=i,phi[i]=i-1; for (LL j=1;j<=prime[0];j++){ if (prime[j]*i>m) break; p[i*prime[j]]=1; if (i%prime[j]==0) phi[i*prime[j]]=phi[i]*prime[j]; else phi[i*prime[j]]=phi[i]*(prime[j]-1); } ans+=(n/i/i)*phi[i]; } printf("%I64d\n",ans); }
相关文章推荐
- test 8 Problem B: [noip2016十连测第八场]降雷皇 (dp+线段树)
- test 7 Problem A: [noip2016十连测第七场]约瑟夫游戏 (找规律+数论)
- [BZOJbegin][noip2016十连测第八场]神炎皇(数学相关:gcd)
- 【bzoj 十连测】[noip2016十连测第八场]Problem A: 神炎皇(数学相关:线性筛)
- test 8 Problem C: [noip2016十连测第八场]幻魔皇 (递推+乱搞)
- hdu 4910 Problem about GCD(数论)
- 【ZSTU4216 2015年12月浙理工校赛 G】【数论 gcd】Jug Hard 两个杯子倒水能否倒腾到目标值
- Codeforces Round #410 (Div. 2)C. Mike and gcd problem(数论)
- 【bzoj 十连测】[noip2016十连测第八场]Problem B: 降雷皇(最长上升子序列+线段树|next数组)
- 2018-01-12 HDU 5974 数论 GCD和LCM 的神奇性质
- test 3 Problem A: [noip2016十连测第三场]平均数 (实数二分+排序+树状数组)
- 【bzoj 十连测】[noip2016十连测第八场]Problem C: 幻魔皇(递推)
- test3 Problem C: [noip2016十连测第三场]序列 (主席树)
- leetcode 365. Water and Jug Problem 两个水杯倒水问题 + 最大公约数Gcd辗转相除法
- 数论之路慢慢之GCD性质
- Codeforces 798C:Mike and gcd problem【数论+贪心】
- Codeforces-798C-Mike and gcd problem(贪心+数论)
- HDU 5974 A Simple Math Problem 数论 gcd
- 取整函数若干性质的证明
- Junit Test problem