#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
int N;
char input[2000];
char show(int ind,int num){
//对当前串进行读取与输出
int flag0=0,flag1=0;
for(int i=0;i<num;i++){
if(input[ind+i]=='0')flag0+=1;
else flag1+=1;
}
switch( (flag0>0) + (flag1>0)*2 ){
case 1:return 'B';
case 2:return 'I';
case 3:return 'F';
}
return '\0';
}
void f(int ind,int num){
//读取/输出当前串-下一同长度串-总串,
//读取/输出当前串需要对当前串的左半部分与右半部分进行处理。除非长度为1
if(num>1){
f(ind,num/2);
f(ind+num/2,num/2);
}
cout<<show(ind,num);
}
int main(){
cin>>N>>input;
f(0,pow(2,N));
return 0;
}
地址:https://www.luogu.com.cn/problem/P1087