792. -1+i 进制

Hard普通指针位运算一维数组

时间限制:1000 ms

内存限制:512 MiB

题面

在采用进位计数的数字系统中,如果使用的数码依次为 0,1,2,…,R−10,1,2,\ldots,R-1,总共 RR 个数码,则称其为基 RR 数制或 RR 进制。RR 称为该数制的“基数”(RadixRadix),例如,十进制的基数是 1010(数码为: 0,1,2,…,90,1,2,\ldots,9),二进制的基数是 22(数码为: 0,10,1),八进制的基数是 88(数码为: 0,1,2,…,70,1,2,\ldots,7)。

现有一种特殊的按位计数系统,该系统采用的基数为复数 −1+i-1+i (其中 ii 表示 −1\sqrt{-1} )。在−1+i-1+i 进制系统中,所有“复数整数”(实部和虚部都为整数的复数,这种复数在数学上称为高斯整数)都可以表示成一个“数”,该“数”只含有 0,10,1 两个数码,不需要正负符号或其他常规手段,而且每个“复数整数”只有唯一一种表示方法。例如:整数 22 用 −1+i-1+i 进制表示出来是1100。

任意一个“复数整数” a+bia+bi (a,ba,b 均为整数) 可采用如下算法转换为−1+i-1+i 进制表示:

1、a+bia+bi 除以 −1+i-1+i 得到商 qq 和余数 rr ,商qq 也为“复数整数”,余数 rr 为 00 或 11。

​ 令 q=qr+qiiq=q_r+q_ii (qrq_r 与 qiq_i 均为整数,分别表示商 qq 的实部与虚部),

​ q,rq,r 必满足下式: a+bi=(qr+qii)(−1+i)+r a+bi= (q_r+q_ii)(-1+i) + r

​ 如果 a,ba,b 均为偶数或均为奇数,则令 rr 为 00。

​ 此外,如果 a,ba,b 一奇一偶,则令 rr 为 11。

2、重复第一步用商 qq 除以 −1+i-1+i 记录下余数 rr,直到商为 00,运算过程结束。

3、从下往上读取余数,就可得到 “复数整数” a+bia+bi 的 −1+i-1+i 进制表示。

例如:整数 2=2+0i2 = 2+ 0i 的运算过程:

整数 22 的实部和虚部都是偶数,所以余数为 00 ,2−1+i=(−1−i)\frac{2}{-1+i} =(-1-i) 余 00

−1−i-1-i 的实部和虚部均为奇数,所以余数为 00,−1−i−1+i=i\frac{-1-i}{-1+i}=i 余 00

ii 的实部为偶数,虚部为奇数,所以余数为 11,i−1+i=1\frac{i}{-1+i}=1 余 11

11 的实部为奇数,虚部为偶数,所以余数为 11,1−1+i=0\frac{1}{-1+i}=0 余 11

商为 00,运算结束,从下往上读取,得到整数 22 用−1+i-1+i进制表示为1100。

下表列出了 −1+i-1+i 进制的位串0000至1111对应的十进制下的“复数整数”。

−1+i-1+i 进制十进制下的复数整数
000
111
10−1+i-1+i
11ii
100−2i-2i
1011−2i1-2i
110−1−i-1-i
111−i-i
10002+2i2+2i
10013+2i3+2i
10101+3i1+3i
10112+3i2+3i
110022
110133
11101+i1+i
11112+i2+i

输入一个十进制下的“复数整数” a+bia+bi ,输出其用 −1+i -1+i进制的表示。

输入格式

在一行中输入一个“复数整数” a+bia+bi (a,ba,b 均为整数,−1018≤a,b≤1018-10^{18}\leq a,b \leq 10^{18})。

注意:输入中不包含多余的空格,但当某项为 00 或 ±1\pm 1 时,采用与手写时相同的表示方式,可以参考上表中的例子。

输出格式

在一行中输出“复数整数” a+bia+bi 用 −1+i -1+i 进制的表示。

样例

输入

2

输出

1100

输入

-1+i

输出

10

输入

-2

输出

11100

输入

3+2i

输出

1001

提示

数据范围

一个很小的范围,15 分。

∣a∣,∣b∣≤106|a|, |b| \leq 10^6,24 分。

∣a∣,∣b∣≤109|a|, |b| \leq 10^9,21 分。

∣a∣,∣b∣≤1018|a|, |b| \leq 10^{18},40 分。