Codeforces Global Round 11 E Xum

题意

cf

做法一

以下均在二进制意义下进行

定义1:令(x^1)(x)去掉最高位的数,(x_1)(x)去掉最低的(1)及后面一截的数

(1101100^1=101100)(1101100_1=1101)

定义2:令((x,y))为数(x,y)拼接后形成的数
定义3:令(|x|)为数(x)的位数

令给出的数为(x),考虑每次去掉最高位为(1)的,即生成(2^{|x|})
((x,0 imes |x|-1))
((x_1,0,x^1))((x,0 imes |x|-1)oplus x)
((x_1<<1,x))((x_1,0,x^1)+(x,0 imes |x|-1))
((x_1<<1,0 imes |x|))((x_1<<1,x)oplus x)
((x,0 imes |x|))((x,0 imes |x|-1)<<1)
(2^{|x|+1})((x_1<<1,0 imes |x|)oplus(x,0 imes |x|))

利用(2^{|x|+1})((x,0 imes |x|-1))的一些高位取掉,只留下(2^|x|)

做法二

(x)为初始给出的奇数,显然通过(O(logn))次可以表示出(nx)
(e)为最大的(2^e<x)
结论1((x,(2^ex)oplus x)=1)

证明:
(2^ex=2^ex+x-2^{e+1})

结论2:存在(a,bge 0)(ax-by=1)其中(b)为偶数

证明:
根据裴蜀定理一定存在(a,bge 0)(ax-by=1)
(b)为奇数,则将(b)加上(x)(a)加上(y)

由于(ax,byge 0,2|by)(ax-by=1),所以(axoplus by=1)

原文地址:https://www.cnblogs.com/Grice/p/13809193.html