- 无需建树,直接定位;
- 变量行无用;
- 另外,getline而入一行后不需要用getchar()读掉末尾的换行符,否则下一行字符串还是会丢失一位,可以理解为getline读入了换行符且作为了结束标志。
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
int n,q,ans,k;
char s3[500005],c,s2[500005];
int main()
{
string s1;
while(scanf("%d",&n)&&n)
{
getchar();
getline(cin,s1);
scanf("%s",s2);
cin>>q;
getchar();
for(int i=1;i<=q;i++)
{
ans=0;
for(int j=1;j<=n;j++)
{
c=getchar();
if(c=='0') ans-=(1<<(n-j));
}
ans+=(1<<n);
s3[i]=s2[ans-1];
getchar();
}
cout<<"S-Tree #"<<++k<<":"<<endl;
for(int i=1;i<=q;i++)
putchar(s3[i]);
cout<<endl<<endl;
}
}