代码
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
int n;
char a[100000];
int di(int n)
{
if(n==0)
return 1;
n=2*di(n-1);
}
void last(int i)
{
if(i>=2*n)
return;
last(i*2);
last(i*2+1);
cout<<a[i];
}
int main()
{
int i,j,k;
char s;
cin>>n;
n=di(n);
scanf("%s",a+n);
i=n;
while(i<=2*n-1)
{
if(a[i]=='1')
a[i]='I';
else a[i]='B';
i++;
}
i=n;j=n;k=n;
while(i>=1)
{
if(i-j==k)
{
j=k/2;
i=j;
k=k/2;
}
if(i==1)
break;
if(a[i]=='B'&&a[i+1]=='B')
a[i/2]='B';
else
{
if(a[i]=='I'&&a[i+1]=='I')
a[i/2]='I';
else
a[i/2]='F';
}
i=i+2;
}
last(1);
return 0;
}