これで良いですよね?

#include <iostream>
using namespace std;

unsigned int h[200][2];

unsigned int mod(char *x){
unsigned int sum=0,n;
for(n=0;x[n]>=0;n++)if(x[n]>0) sum+=h[n][x[n]-1];
return sum;}

main(){
unsigned int m, n, k=1;
//初期化
for(n=0;n<200;n++){ h[n][0]=k; m=k+k; h[n][1]=m; k=m+k; }

char san[]={0,0,1,1,1,1,1,1,2,2,1,2,1,0,2,2,1,0,2,1,0,1,-1};
cout<<mod(san);
}