JZOJ.4714【NOIP2016提高A组模拟8.19】公约数
2016-08-22 10:19
155 查看
Problem
Description
给定一个正整数,在[1,n]的范围内,求出有多少个无序数对(a,b)满足gcd(a,b)=a xor b。Input
输入共一行,一个正整数n。Output
输出共一行,一个正整数表示答案。Sample Input
3Sample Output
1解释:只有(2,3)满足要求
Data Constraint
对于30%的数据满足n<=1000对于60%的数据满足n<=10^5
对于100%的数据满足n<=10^7
Solution
我们可以知道,对于某一些数对,他们的GCD是相同的,所以我们设a=2n,b=2n+1,只要枚举(ka,kb)(因为gcd(a,b)=1,所以gcd(ka,kb)=k),然后判断一下a^b是否等于k就行了。当然,还有另外一种更好理解的方法。
我们发现,gcd(a,b)≤a−b,a异或b≥a−b。
所以,如果gcd(a,b)=a^b,那么当且仅当a^b=a-b.
我们枚举b,令a=kb,然后判断a^b是否等于a-b即可。
——2016.8.22
相关文章推荐
- JZOJ 4714 【NOIP2016提高A组模拟8.19】公约数
- [JZOJ 4714]【NOIP2016提高A组模拟8.19】公约数
- 【NOIP2016提高A组模拟8.19】公约数
- JZOJ 4715 【NOIP2016提高A组模拟8.19】树上路径
- 【JZOJ4715】【NOIP2016提高A组模拟8.19】树上路径
- 【NOIP2016提高A组模拟8.19】公约数
- 【NOIP2016提高A组模拟8.19】(雅礼联考day2)公约数
- {题解}[jzoj4799]【NOIP2016提高A组模拟9.24】我的快乐时代
- 【JZOJ4805】【NOIP2016提高A组模拟9.28】跟踪
- 【JZOJ4819】【NOIP2016提高A组模拟10.15】算循环
- JZOJ 4821 【NOIP2016提高A组模拟10.15】打膈膜
- JZOJ 4628 立方体【NOIP2016提高A组模拟7.15】
- 【NOIP2016提高A组模拟8.19】(雅礼联考day2)总结
- JZOJ 4798 【NOIP2016提高A组模拟9.24】天使的分裂
- JZOJ 4711 Binary【NOIP2016提高A组模拟8.17】
- JZOJ 4630 计数【NOIP2016提高A组模拟7.15】
- 【JZOJ4763】【NOIP2016提高A组模拟9.7】旷野大计算
- JZOJ 4778. 【NOIP2016提高A组模拟9.14】数列编辑器
- JZOJ 4709 Matrix【NOIP2016提高A组模拟8.17】