#include <bits/stdc++.h>
using namespace std;
struct node{
char val;
int l,r;
}tree[1030];
int n,o_n=1;
string s,t;
void bt(int le,int ri,int non){
if(le==ri){
if(s[le]-'0')tree[non].val='I';
else tree[non].val='B';
}
else{
int o1,o2;
bt(le,(ri+1)/2-1,++o_n);
o1=o_n;
tree[non].l=o_n;
bt((ri+1)/2,ri,++o_n);
o2=o_n;
tree[non].r=o_n;
if(tree[o1].val=='F'||tree[o2].val=='F'||tree[o1].val!=tree[o2].val)tree[non].val='F';
else tree[non].val=tree[o1].val;
}
return;
}
void be(int q){
if(tree[q].l)be(tree[q].l);
if(tree[q].r)be(tree[q].r);
cout<<tree[q].val;
}
int main(){
cin>>n;
cin>>s;
bt(0,s.size()-1,1);
be(1);
return 0;
}
样例死循环了