1 条题解

  • 0
    @ 2026-10-25 14:59:50

    思路

    超出64位的2次幂,需要数位表示和乘法进位。

    参考程序(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    using Big=vector<long long>;const long long B=1000000000;
    void mul(Big& a,int b){long long c=0;for(auto &x:a){c+=x*b;x=c%B;c/=B;}while(c){a.push_back(c%B);c/=B;}}
    void add(Big& a,const Big& b){a.resize(max(a.size(),b.size()),0);long long c=0;for(size_t i=0;i<a.size();i++){c+=a[i]+(i<b.size()?b[i]:0);a[i]=c%B;c/=B;}if(c)a.push_back(c);}
    void print(const Big& a){cout<<a.back();for(int i=(int)a.size()-2;i>=0;i--)cout<<setw(9)<<setfill('0')<<a[i];cout<<'\n';}
    int main(){int n;cin>>n;Big a(1,1);for(int i=0;i<n;i++)mul(a,2);print(a);}
    
    • 1

    信息

    ID
    1066
    时间
    1000ms
    内存
    64MiB
    难度
    进阶
    标签
    递交数
    1
    已通过
    1
    上传者