#include<cstdio>
char a[2000];
#include<cmath>
int tree(int begin,int end)
{
char s=0;
char i, j;
if (begin == end) { printf("%c", a[begin] == '1' ? 'I' : 'B'); return a[begin]-'0'; }
i=tree(begin, (begin + end)/ 2);
j=tree((begin + end) / 2 + 1, end);
if (j != i)
{
printf("F");
return 2;
}
else
{
switch (i)
{
case 0:printf("B"); return 0;
case 1:printf("I"); return 1;
case 2:printf("F"); return 2;
}
}
}
int main()
{
int n=0,i=0;
scanf("%d", &n);
int k=1;
for (int j = 0; j < n; j++)
{
k *= 2;
}
scanf("%s", a);
tree(0, k-1);
return 1;
}
题目中说输入最大为2^N,N<=10,我这里字符串数组a开了2000可还是会RE,这是因为什么啊 !