题面
在采用进位计数的数字系统中,如果使用的数码依次为 ,总共 个数码,则称其为基 数制或 进制。 称为该数制的“基数”(),例如,十进制的基数是 (数码为: ),二进制的基数是 (数码为: ),八进制的基数是 (数码为: )。
现有一种特殊的按位计数系统,该系统采用的基数为复数 (其中 表示 )。在 进制系统中,所有“复数整数”(实部和虚部都为整数的复数,这种复数在数学上称为高斯整数)都可以表示成一个“数”,该“数”只含有 两个数码,不需要正负符号或其他常规手段,而且每个“复数整数”只有唯一一种表示方法。例如:整数 用 进制表示出来是1100
。
任意一个“复数整数” ( 均为整数) 可采用如下算法转换为 进制表示:
1、 除以 得到商 和余数 ,商 也为“复数整数”,余数 为 或 。
令 ( 与 均为整数,分别表示商 的实部与虚部),
必满足下式:
如果 均为偶数或均为奇数,则令 为 。
此外,如果 一奇一偶,则令 为 。
2、重复第一步用商 除以 记录下余数 ,直到商为 ,运算过程结束。
3、从下往上读取余数,就可得到 “复数整数” 的 进制表示。
例如:整数 的运算过程:
整数 的实部和虚部都是偶数,所以余数为 , 余
的实部和虚部均为奇数,所以余数为 , 余
的实部为偶数,虚部为奇数,所以余数为 , 余
的实部为奇数,虚部为偶数,所以余数为 , 余
商为 ,运算结束,从下往上读取,得到整数 用进制表示为1100
。
下表列出了 进制的位串0000
至1111
对应的十进制下的“复数整数”。
进制 | 十进制下的复数整数 |
---|---|
0 | |
1 | |
10 | |
11 | |
100 | |
101 | |
110 | |
111 | |
1000 | |
1001 | |
1010 | |
1011 | |
1100 | |
1101 | |
1110 | |
1111 |
输入一个 进制下的数(为了简化,我们将0,1位串用一个十六进制整数表示),输出其对应的十进制下的“复数整数” 。
输入格式
在一行中输入一个 进制下的数(十六进制表示,使用 09 以及大写 AF)。
- 35% 的数据保证答案的 ;
- 58% 的数据保证答案的 ;
- 100% 的数据保证答案的 .
输出格式
在一行中输出对应的十进制下的“复数整数” (均为整数),省略的情况与正常书写复数时一致,请参考上面的表格以及样例。
样例
输入
0x21
输出
5-4i
输入
0x2
输出
-1+i
输入
0x1C
输出
-2
输入
0x9
输出
3+2i