这道题的n数据不大,只有到100,而long long的存储最大值是 2^64-1 ,所以我们只需要将 n 的值从63枚举到100即可。 AC代码:
#include<bits/stdc++.h>
using namespace std;
#define int long long
int FJ(int n,int k){
int ans = 1;
while(n){
if(n&1){
ans = ans * k;
}
n >>=1;
k =k*k;
}
return ans;
}
signed main(){
int n;cin>>n;
if(n <= 62)cout<<FJ(n,2)<<endl;
else{
if(n == 63) cout<<"9223372036854775808";
if(n == 64) cout<<"18446744073709551616";
if(n == 65) cout<<"36893488147419103232";
if(n == 66) cout<<"73786976294838206464";
if(n == 67) cout<<"147573952589676412928";
if(n == 68) cout<<"295147905179352825856";
if(n == 69) cout<<"590295810358705651712";
if(n == 70) cout<<"1180591620717411303424";
if(n == 71) cout<<"2361183241434822606848";
if(n == 72) cout<<"4722366482869645213696";
if(n == 73) cout<<"9444732965739290427392";
if(n == 74) cout<<"18889465931478580854784";
if(n == 75) cout<<"37778931862957161709568";
if(n == 76) cout<<"75557863725914323419136";
if(n == 77) cout<<"151115727451828646838272";
if(n == 78) cout<<"302231454903657293676544";
if(n == 79) cout<<"604462909807314587353088";
if(n == 80) cout<<"1208925819614629174706176";
if(n == 81) cout<<"2417851639229258349412352";
if(n == 82) cout<<"4835703278458516698824704";
if(n == 83) cout<<"9671406556917033397649408";
if(n == 84) cout<<"19342813113834066795298816";
if(n == 85) cout<<"38685626227668133590597632";
if(n == 86) cout<<"77371252455336267181195264";
if(n == 87) cout<<"154742504910672534362390528";
if(n == 88) cout<<"309485009821345068724781056";
if(n == 89) cout<<"618970019642690137449562112";
if(n == 90) cout<<"1237940039285380274899124224";
if(n == 91) cout<<"2475880078570760549798248448";
if(n == 92) cout<<"4951760157141521099596496896";
if(n == 93) cout<<"9903520314283042199192993792";
if(n == 94) cout<<"19807040628566084398385987584";
if(n == 95) cout<<"39614081257132168796771975168";
if(n == 96) cout<<"79228162514264337593543950336";
if(n == 97) cout<<"158456325028528675187087900672";
if(n == 98) cout<<"316912650057057350374175801344";
if(n == 99) cout<<"633825300114114700748351602688";
if(n == 100) cout<<"12676506002282294014967032053762101";
}
}