#include <bits/stdc++.h>
using namespace std;
int a[110][110], b[110], l[110], s[210], len;
int main(){
a[0][1] = 1, l[0] = 1;
for(int i = 1; i <= 63; i++){
l[i] = l[i-1];
for(int j = 1; j <= l[i]; j++){
a[i][j] += a[i-1][j] * 2;
a[i][j+1] = a[i][j] / 10;
a[i][j] %= 10;
}
while(a[i][l[i]+1] > 0){
l[i]++;
a[i][l[i]+1] += (a[i][l[i]] / 10);
a[i][l[i]] %= 10;
}
while(a[i][l[i]] == 0 && l[i]) l[i]--;
}
for(int i = 1; i <= 64; i++){
scanf("%d", &b[i]);
if(b[i] == 0) continue;
len = max(len, l[i-1]);
for(int j = 1; j <= len; j++){
s[j] += a[i-1][j];
s[j+1] += s[j] / 10;
s[j] %= 10;
}
while(s[len+1] > 0){
len++;
s[len+1] += s[len] / 10;
s[len] %= 10;
}
while(s[len] == 0 && len) len--;
}
for(int i = len; i >= 1; i--)
printf("%d", s[i]);
return 0;
}
要开long long
不知道你这个问题是否已经解决, 如果还没有解决的话: