HZNUOJ

曾小浪的蓝屏代码

Tags:   
Time Limit:  1 s      Memory Limit:   256 MB
Submission:293     AC:95     Score:94.46

Description

       曾小浪的电脑蓝屏了并且出现了错误代码c000007b,他想要知道是哪里出现了错误,却又不了解这串字符的意思。于是他便请教了机智的小马哥。小马哥告诉他这是错误发生的逻辑地址,以十六进制表示。其中a代表10,b代表11,c代表12,d代表13,e代表14,f代表15。在二进制下表示为‭11000000000000000000000001111011‬。


        这是32位机惯用的内存编码。但是光知道逻辑地址并不能清楚正真的错误发生在了哪里,因为错误是发生在逻辑地址对应的物理地址中。要转换成物理地址并不困难,只需要将逻辑块号替换为物理块号即可,块号就是地址的前m位,那么现在已知了块号的二进制长度m和物理块号值k,有了这些,简单计算一下,物理地址就能算出来了。


       小马哥说完就去撸猫了,于是他便把问题抛给了你。具体转换过程请参照下方hint

Input

第一行一个整数T,表示T组数据。(0<T<50)

每组数据包括三行,分别为

字符串a(八位的十六进制字符串代表逻辑地址)

块号位数m(0<=m<32)

物理块号值k(0<=k<2^m-1)。

Output

对于每组输入,请输出一行表示十六进制下当前逻辑地址对应的物理地址(行末无多余空格)。

Samples

input
1 c000007b 10 10
output
0280007b

Hint

   c     0     0     0     0     0     7     b      | 逻辑地址的十六进制
1100  0000  0000  0000  0000  0000  0111  1011      | 逻辑地址的二进制
0000  0010  10                                      | 长度为10的值为10的二进制
0000 ‭ 0010  1000  0000  0000  0000  0111  1011‬      | 覆盖后得出的物理地址
   0     2     8     0     0     0     7     b      | 转化为十六进制

ps:只覆盖前m位

Author

CAI, Mengzhang