#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int n;
int data[1025];
int dg(int l,int r) {
if(l == r) {
if(!data[l]) {
printf("B");
return 0;
} else {
printf("I");
return 1;
}
}
int a,b;
a = dg(l,(l + r) >> 1);
b = dg(((l + r) >> 1) + 1,r);
if(!a && !b) {
printf("B");
return 0;
} else if(a == 1 && b == 1) { //不能写成 (a && b) , 因为写成这样会把 F 情况误判成 I
printf("I");
return 1;
} else {
printf("F");
return 2;
}
}
int main() {
scanf("%d",&n);
n = (1<<n);
char tmp[1026];
cin>>tmp;
for(int i = 1; i<=n; i++) {
data[i] = tmp[i-1] - '0';
}
dg(1,n);
return 0;
}
FBI树
最新推荐文章于 2024-05-05 18:41:20 发布