1 solutions

  • 0
    @ 2024-5-26 14:38:34
    #include<bits/stdc++.h>
    using namespace std;
    const int N=210;
    int a[N],c[N],d[N];
    void mul()
    {
        int t=0;
        for(int i=0;i<N;i++)
        {
            t=t+a[i]*2;
            c[i]=t%10;
            t/=10;
        }
        for(int i=0;i<N;i++)
        {
            c[i+1]=c[i+1]+c[i]/10;
            c[i]%=10;
        }
        memcpy(a,c,sizeof c);
    }
    void add()
    {
        int t=2; //进位 
        for(int i=0;i<N;i++)
        {
            t=c[i]+t;
            d[i]=t%10;
            t/=10;
        }
    }
    int main()
    {
        int n;
        scanf("%d",&n);
        a[0]=0;
        for(int i=1;i<=n;i++) //一共n个盘子 
        {
            mul(); //高精度乘法 
            add(); //高精度加法 
            memcpy(a,d,sizeof d);
        }
        int lend=N-1;
        while(lend>0&&d[lend]==0) lend--;
        for(int i=lend;i>=0;i--)
        {
            printf("%d",d[i]);
        }
        return 0;
    }
    
    • 1

    Information

    ID
    960
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    5
    Tags
    (None)
    # Submissions
    32
    Accepted
    6
    Uploaded By