SSL-1249 思考过程

版权声明:转载无所谓的。。。 https://blog.csdn.net/xuxiayang/article/details/83501318

题目

g c d ( a , b ) = a   x o r   b gcd(a,b)=a\ xor\ b a , b [ 1.. n ] a,b\in[1..n] 的方案数


思路1

c = g c d ( a , b ) = a   x o r   b c=gcd(a,b)=a\ xor\ b
到这30分,具体做法:暴力O(n^2logn)
a   x o r   b = c \because a\ xor\ b=c
a   x o r   c = b \therefore a\ xor\ c=b
g c d ( a , a   x o r   c ) = a   x o r   b \therefore gcd(a,a\ xor\ c)=a\ xor\ b
g c d ( a , a   x o r   c ) = c \therefore gcd(a,a\ xor\ c)=c
到这60分,具体做法:此时已经知道a是c的倍数,枚举c和c的倍数即可,加上gcd的复杂度O(nlog2n)
g c d ( a , b ) a b , a   x o r   b a b \because gcd(a,b)\leq a-b,a\ xor\ b\geq a-b
c = a b \therefore c=a-b
b = a c \therefore b=a-c
g c d ( a , b ) = g c d ( a , a c ) = c \therefore gcd(a,b)=gcd(a,a-c)=c
g c d ( a , a   x o r   c ) = c \because gcd(a,a\ xor\ c)=c
所以当且仅当 a c = a   x o r   c a-c=a\ xor\ c g c d ( a , a c ) = c gcd(a,a-c)=c
到这100分,具体做法:同样知道a是c的倍数,但此时不需要计算gcd,复杂度O(nlogn)


思路2(非正确,仅供参考)

首先 a b a\geq b ,所以有
1 < = a   x o r   b < 2 ( [ l o g 2 a ] + 1 ) 1<=a\ xor\ b<2^{([log_2a]+1)}
1 < = g c d ( a , b ) < = b 1<=gcd(a,b)<=b

枚举a,b的最大公约数,同时这也是 a   x o r   b a\ xor\ b 的值,计算解数

g c d ( x , y ) = i gcd(x,y)=i
x   x o r   y = i x\ xor\ y=i


下面是作者闲的无聊推的一些乱七八糟的东西

i = 1 i=1 ,则 g c d ( x , y ) = 1 gcd(x,y)=1 ,即 x , y x,y 互质
同时 x   x o r   y = 1 x\ xor\ y=1 ,表示 x , y x,y 一个为奇数,一个为偶数,所以得到在二进制下
x x 最后一位是1或0,且与y相反,其它位全是1或0
y y 最后一位是1或0,且与x相反,其它位全是1或0
当x在二进制下最后一位是1,时
x = 1 x=1 x = 2 k 1 x=2^k-1 解析: ( 1111111 ) 2 = ( 10000000 ) 2 1 (1111111)_2=(10000000)_2-1
y = 0 y=0 y = 2 k 2 y=2^k-2 解析: ( 1111110 ) 2 = ( 10000000 ) 2 2 (1111110)_2=(10000000)_2-2
y [ 1.. n ] \because y\in [1..n]
x = 2 k 1 , y = 2 k 2 \therefore x=2^k-1,y=2^k-2
k 2 ( [ l o g 2 n ] + 1 ) \because k\leq 2^{([log_2n]+1)}
\therefore 一共有 [ l o g 2 n ] + 1 [log_2n]+1 组解


i = 2 i=2 ,则 g c d ( x , y ) = x   x o r   y = 2 gcd(x,y)=x\ xor\ y=2
所以 x , y x,y 在二进制下一定是形如这样的形式
x = 000010 x=000010
y = 000000 y=000000

x = 111110 x=111110
y = 111100 y=111100
y [ 1.. n ] \because y\in [1..n]
\therefore 第一种情况不存在
x = 2 k 2 , y = 2 k 4 \therefore x=2^k-2,y=2^k-4
\therefore 同样有 [ l o g 2 n ] + 1 [log_2n]+1 组解


剩下的由于作者能力有限,推不出来了,于是就放弃了。。。


猜你喜欢

转载自blog.csdn.net/xuxiayang/article/details/83501318
今日推荐