写个高精度。
然后扫过去就行了。
抽题器竟然抽了这么水的题233.

code:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int k;
struct N{
	int a[100];
	friend N operator + (const N&a,const N&b){
		N c;
		for(int i=0;i<100;i++) c.a[i]=a.a[i]+b.a[i];
		for(int i=0;i<99;i++) c.a[i+1]+=c.a[i]/10,c.a[i]%=10;
		return c;
	}
	N mul2(){
		N b;
		for(int i=0;i<100;i++) b.a[i]=a[i]*2;
		for(int i=0;i<99;i++) b.a[i+1]+=b.a[i]/10,b.a[i]%=10;
		return b;
	}
	void out(){
		int top=99;
		while(top>0&&a[top]==0){
			top--;
		}
		while(top>=0) printf("%d",a[top--]);
		puts("");
	}
}po2[105],ans;
char s[205];
int p;
void solve(int k){
	if(s[p]=='0') ans=ans+po2[2*k],p++;
	else if(s[p]=='1'){
		p++;
	}else{
		p++;
		solve(k-1);
		solve(k-1);
		solve(k-1);
		solve(k-1);
	}
}
int main(){
	po2[0].a[0]=1;
	for(int i=1;i<=100;i++){
		po2[i]=po2[i-1].mul2();
	}
	scanf("%d",&k);
	scanf("%s",s+1);
	p=1;
	solve(k);
	ans.out();
	return 0;
}