水题.按位数根据目标数的奇偶性递推即可
#include<stdio.h>
#include<string.h>
int main()
{
int t;
scanf("%d",&t);
while (t--)
{
int k,c=0,bit[65],i;
long long n;
char s[65];
scanf("%d",&k);
scanf("%s",s);
scanf("%lld",&n);
for (i=k-1;i>=0;i--)
{
if (abs(n%2)==1)
{
if (s[i]=='p') {n--;n/=2;}
else {n++;n/=2;}
bit[c++]=1;
}
else {n/=2;bit[c++]=0;}
}
if (n==0)
{
for (i=k-1;i>=0;i--) printf("%d",bit[i]);
printf("\n");
}
else printf("Impossible\n");
}
return 0;
}