poj1023 2010.2.22
题意:
题目意思是有一个k位的2进制的数,把他转化成10进制,如果可以转换得到题目要求的数,则输出那个2进制数。但是转换成10进制数固定的加,它还可以减。题目会给出哪一位是+,哪一位是-,分别由p和n代表。比如:
4
ppnn
10
意思是有一个4位的2进制数ppnn代表++--。这里可以这样组合:1110.因为2^3+2^2-2^1-0=10.所以输出1110.
#include <stdio.h>
#include <string.h>
char a[100];
long long num;
int b[100];
int t;
int len;
int main()
{
int i;
scanf("%d",&t);
while(t--)//不错的方法
{
scanf("%d",&len);
scanf("%s",a);
scanf("%I64d",&num);
//这里的int64的输入,I是大写,我刚开始一直用小写,wa了
memset(b,0,sizeof(b));
i=len;
while(i--)//不错的方法
{
if(num%2==0) b[i]=0;
else
{
if(a[i]=='n') num+=1;
else num-=1;
b[i]=1;
}
num/=2;
}
if(num!=0)
printf("Impossible\n");
else
{
for(i=0;i<len;i++)
printf("%d",b[i]);
printf("\n");
}
}
}