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\times |x|-1)\)
\((x_1,0,x^1)\)\((x,0\times |x|-1)\oplus x\)
\((x_1<<1,x)\)\((x_1,0,x^1)+(x,0\times |x|-1)\)
\((x_1<<1,0\times |x|)\)\((x_1<<1,x)\oplus x\)
\((x,0\times |x|)\)\((x,0\times |x|-1)<<1\)
\(2^{|x|+1}\)\((x_1<<1,0\times |x|)\oplus(x,0\times |x|)\)

利用\(2^{|x|+1}\)\((x,0\times |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,b\ge 0\)\(ax-by=1\)其中\(b\)为偶数

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

由于\(ax,by\ge 0,2|by\)\(ax-by=1\),所以\(ax\oplus by=1\)

posted @ 2020-10-13 15:35  Grice  阅读(200)  评论(0编辑  收藏  举报