AtCoder第二题

img


AtCoder第二题,这么写为什么不对呢

#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

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^