import java.util.*;
import java.math.*;
public class Main
{
public static String solve(String s, long n)
{
// if(n==Long.MIN_VALUE)return "1000000000000000000000000000000000000000000000000000000000000000";
String result = "";
boolean flag = n>0?true:false;
n = n>0?n:-n;
long t=1;
for(int i=s.length()-1;i>=0;--i)
{
char ch=s.charAt(i);
switch(ch)
{
case 'p':
if(flag) {result+=n%2;n/=2;break;}
else {result +=n%2; n=(n+n%2*t)/2;break;}
case 'n':
if(flag) {result+=n%2;n=(n+n%2*t)/2;break;}
else {result+=n%2;n=n/2;break;}
}
//t *=2;
}
StringBuffer one = new StringBuffer(result);
if(n==0) result =one.reverse().toString();
if(n!=0) result="Impossible";
return result;
}
public static void main(String[]args)
{
// System.out.println(Long.MAX_VALUE+" "+Long.MIN_VALUE);
Scanner in = new Scanner(System.in);
String s;
long len;
long n;
int test;
test = in.nextInt();
for(int i=0;i<test;i++)
{
len = in.nextLong();
s = in.next();
n = in.nextLong();
System.out.println(Main.solve(s, n));
}
}
}
poj 1023
最新推荐文章于 2021-06-19 19:29:55 发布