题意:一颗满二叉树,每个非叶子层用一个变量xi表示。有m条从根结点开始的路线,0表示向左孩子走,1表示向右孩子走,问m条路的最终结点的值。(模拟)
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <cmath>
#include <stack>
#include <map>
#include <string>
#define LL long long
#define DB double
#define SF scanf
#define PF printf
#define N 1009
#define bug cout<<"bug"<<endl;
using namespace std;
char pth[10];
int n,m;
char lef[N];
char ans[N];
int main()
{
#ifndef ONLINE_JUDGE
freopen("in.txt","r",stdin);
#endif
int T = 1;
while(~SF("%d",&n)&&n)
{
char ch[19];
for(int i=1;i<=n;i++)
{
SF("%s",ch);
sscanf(ch+1,"%d",&pth[i]);
}
SF("%s",lef);
SF("%d",&m);
int tmp = 0;
while(m--)
{
SF("%s",ch+1);
int p = 0;
for(int i=1;i<=n;i++)
{
if(ch[pth[i]]=='0') p*=2;
else p = p*2+1;
}
ans[tmp++] = lef[p];
}
ans[tmp] = '\0';
PF("S-Tree #%d:\n%s\n\n",T++,ans);
}
return 0;
}