UVA12716 GCD等于XOR GCD XOR 数论
Posted goto_1600
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UVA12716 GCD等于XOR GCD XOR 数论相关的知识,希望对你有一定的参考价值。
link
题意:
给定n求
∑
i
=
1
n
∑
j
=
i
n
[
i
⊕
j
=
=
gcd
(
i
,
j
)
]
n
<
=
3
e
7
\\sum_{i=1}^n \\sum_{j=i}^{n} {[i\\oplus j==\\gcd(i,j)]} ~~~~~n<=3e7
∑i=1n∑j=in[i⊕j==gcd(i,j)] n<=3e7
思路:
有个结论,就是
i
⊕
j
>
=
i
−
j
>
=
g
c
d
(
i
,
j
)
i \\oplus j >= i-j>=gcd(i,j)
i⊕j>=i−j>=gcd(i,j) ,前面很明显,因为
i
⊕
j
>
=
i
−
j
a
n
d
i
⊕
j
<
=
i
+
j
i\\oplus j>=i-j ~~~and~~~~~i\\oplus j<=i+j
i⊕j>=i−j and i⊕j<=i+j 这是二进制异或的性质,后面因为
i
和
j
都
能
写
成
g
c
d
(
i
,
j
)
∗
k
的
形
式
,
那
么
一
定
大
宇
等
于
g
c
d
.
所
以
i
⊕
j
=
=
gcd
(
i
,
j
)
就
能
变
成
i
⊕
j
=
=
i
−
j
同
时
i
=
j
+
gcd
(
i
,
j
)
这
样
我
们
可
以
枚
举
i
和
i
的
因
子
做
为
g
c
d
(
i
,
j
)
然
后
判
断
一
下
就
可
以
了
复
杂
度
O
(
n
l
o
g
n
)
n
需
要
预
处
理
然
后
有
个
问
题
我
疑
惑
的
是
枚
举
i
的
因
子
的
时
候
如
果
满
足
的
话
,
这
个
因
子
k
一
定
是
gcd
(
i
,
j
)
嘛
?
好
像
是
的
,
因
为
假
设
k
是
i
的
因
子
,
同
时
i
−
j
=
=
i
⊕
j
=
=
k
由
于
i
%
k
=
=
0
所
以
j
%
k
=
=
0
所
以
k
<
=
g
c
d
(
i
,
j
)
,
由
于
i
−
j
>
=
gcd
(
i
,
j
)
所
以
k
只
能
是
gcd
(
i
,
j
)
i和j都能写成gcd(i,j)*k的形式,那么一定大宇等于gcd.\\\\所以i \\oplus j==\\gcd(i,j)就能变成i\\oplus j ==i-j \\\\同时i=j+\\gcd(i,j)这样我们可以枚举i和i的因子做为gcd(i,j) \\\\然后判断一下就可以了\\\\ 复杂度O(nlogn)~~n需要预处理 \\\\然后有个问题我疑惑的是枚举i的因子的时候如果满足的话,\\\\这个因子k一定是\\gcd(i,j)嘛?\\\\好像是的,因为假设k是i的因子,同时i-j==i\\oplus j==k\\\\由于i\\%k==0 所以j\\%k==0 所以k<=gcd(i,j) ,\\\\由于i-j>=\\gcd(i,j)所以k只能是\\gcd(i,j)
i和j都能写成gcd(i,j)∗k的形式,那么一定大宇等于gcd.所以i⊕j==gcd(i,j)就能变成i⊕j==i−j同时i=j+gcd(i,j)这样我们可以枚举i和i的因子做为gcd(i,j)然后判断一下就可以了复杂度O(nlogn) n需要预处理然后有个问题我疑惑的是枚举i的因子的时候如果满足的话,这个因子k一定是gcd(i,j)嘛?好像是的,因为假设k是i的因子,同时i−j==i⊕j==k由于i%k==0所以j%k==0所以k<=gcd(i,j),由于i−j>=gcd(i,j)所以k只能是gcd(i,j)
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=3e7+10;
ll ans[N];
void prework(){
for(int i=1;i<N;i++){
for(int j=2*i;j<N;j+=i){
int k=j-i;
if(i==(k^j)) ans[j]++;
}
}
for(int i=1;i<N;i++)
ans[i]+=ans[i-1];
}
int main(){
prework();
int t;
scanf("%d",&t);
int cas=0;
while(t--){
++cas;
int x;
scanf("%d",&x);
printf("Case %d: %lld\\n",cas,ans[x]);
}
}
以上是关于UVA12716 GCD等于XOR GCD XOR 数论的主要内容,如果未能解决你的问题,请参考以下文章