Description
给定一个正整数,在 [1,n] [1,n] 的范围内,求出有多少个无序数对 (a,b) (a,b) 满足gcd(a,b)=a xor bgcd(a,b)=a xor b。
Input
输入共一行,一个正整数 n n。
Output
输出共一行,一个正整数表示答案。
Data Constraint
对于 30% 30% 的数据满足 n<=1000 n<=1000
对于 60% 60% 的数据满足 n<=105 n<=105
对于 100% 100% 的数据满足 n<=107 n<=107
Sample Input
3
Sample Output
1
解释:只有 (2,3) (2,3) 满足要求
solution
一道结论题。设a>ba>b
① a−b≥gcd(a,b)a−b≥gcd(a,b)
② a−b≤a xor ba−b≤a xor b
结论:使gcd(a,b)=a xor b 的只可能是a-b,枚举一下就好了。
Code
var i,n,a,j,ans:longint;
begin
readln(n);
i:=1;
for i:=1 to n do begin
for j:=2 to n do begin
if i*j>n then break;
a:=i*j;
if a xor i=a-i then inc(ans);
end;
end;
writeln(ans);
end.

本文探讨了一种特殊的无序数对(a,b),其中a和b为[1,n]区间内的正整数,满足条件gcd(a,b)=a xor b。文章提供了输入输出样例及解析,并给出了解决该问题的代码实现。
256

被折叠的 条评论
为什么被折叠?



