6 solutions
-
0
高精度
#include<bits/stdc++.h> using namespace std; int ans[11100]={1}; int main(){ int n,t=1; cin>>n; for(int i=0;i<n;i++){ for(int j=0;j<t;j++) ans[j]*=2; for(int j=0;j<t;j++){ if(ans[j]>=10){ if(ans[j+1]==0) t++; ans[j+1]+=ans[j]/10,ans[j]%=10; } } } bool flag=0; for(int i=t-1;i>=0;i--) if(ans[i]!=0 || flag==1) flag=1,cout<<ans[i]; return 0; }
-
-1
最长的题解,来于讨论的 long_int 类,其实很多没用的
#include<iostream> #include<string> using namespace std; class long_int { protected: string num; bool s; public: long_int(string fnum,bool fs=false) { num=fnum; s=fs; } void help() { } string get() { string fh; if(num!="0") { fh=(! s)?"":"-"; } return fh+num; } string get_num() { return num; } bool get_sign() { return s; } int get_size() { return num.size(); } void set(string fnum) { num=fnum; } void set_sign(bool fs) { s=fs; } short cmp(string fst,bool fs=false) { int f1=num.size(); int f2=fst.size(); if(num==fst) { if(num=="0") { return 0; } else if(s==fs) { return 0; } else if(s==0 && fs==1) { return 1; } else if(s==1 && fs==0) { return -1; } else { return 2; } } else { if(f1<f2) { if((s==0 && fs==0) || (s==1 && fs==0)) { return -1; } else if((s==1 && fs==1) || (s==0 && fs==1)) { return 1; } } else if(f1>f2) { if((s==0 && fs==0) || (s==0 && fs==1)) { return 1; } else if((s==1 && fs==1) || (s==1 && fs==0)) { return -1; } } else if(f1==f2) { for(int i=0;i<f1;i++) { if(num[i]<fst[i]) { if((s==0 && fs==0) || (s==1 && fs==0)) { return -1; } else if((s==1 && fs==1) || (s==0 && fs==1)) { return 1; } } else if(num[i]>fst[i]) { if((s==0 && fs==0) || (s==0 && fs==1)) { return 1; } else if((s==1 && fs==1) || (s==1 && fs==0)) { return -1; } } } } } } short cmp_long_int(long_int &p) { return cmp(p.get_num(),p.get_sign()); } string remove_lead(string fns,string lead) { string fs=fns; string ne=""; bool find=false; for(int i=0;i<fs.size();i++) { if(!find && fs[i]!='0') { find=!find; } if(find) { ne+=fs[i]; } } return ne; } string str_anti(string fs) { for(int i=0;i<fs.size()/2;i++) { char t=fs[i]; fs[i]=fs[fs.size()-i-1]; fs[fs.size()-i-1]=t; } return fs; } string add(string fns,bool fs=false) { if(s!=fs) { return sub(fns,!fs); } string fnum=num; string fn=fns; int ma=max(fnum.size(),fn.size()); string end=""; fnum=str_anti(fnum); for(int i=0;i<ma-fnum.size()+1;i++) { fnum+="0"; } fn=str_anti(fn); for(int i=0;i<ma-fn.size()+4;i++) { fn+="0"; } int jw=0; for(int i=0;i<ma;i++) { int x=(int(fnum[i]-48)+int(fn[i]-48)+jw); jw=0; if(x>=10) { jw=1; } end+=char((x%10)+48); } end+=char(jw+48); end=str_anti(end); end=remove_lead(end,"0"); num=end; return num; } string sub(string fns,bool fs=false) { if(s!=fs) { return add(fns,!fs); } string fnum=num; string fn=fns; int ma=max(fnum.size(),fn.size()); string end=""; fnum=str_anti(fnum); for(int i=0;i<ma-fnum.size()+1;i++) { fnum+="0"; } fn=str_anti(fn); for(int i=0;i<ma-fn.size()+4;i++) { fn+="0"; } int jw=0; for(int i=0;i<ma;i++) { int x=(int(fnum[i]-48)-int(fn[i]-48)-jw); jw=0; if(x<0) { jw=1; } end+=char(((x+10)%10)+48); } end+=char(jw+48); end=str_anti(end); end=remove_lead(end,"0"); num=end; return num; } }; int main() { long_int a("1"); int s; cin>>s; while(s--) { a.add(a.get_num()); } cout<<a.get(); }
-
-1
#include <bits/stdc++.h> using namespace std; int a[35] = {0,1}; void x2(){ int x = 0; for (int i = 1;i < 32;i++){ a[i] = a[i] * 2 + x; x = a[i] / 10; a[i] %= 10; } } int main(int argc, char **argv){ int n,l = 31; cin >> n; for (int i = 1;i <= n;i++){ x2(); } while (a[l] == 0){ l--; } for (int i = l;i > 0;i--){ printf("%d",a[i]); } return 0; }
- 1
Information
- ID
- 656
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 5
- Tags
- # Submissions
- 102
- Accepted
- 36
- Uploaded By