1 条题解
-
0
思路
超出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