delete pics to save space
This commit is contained in:
103
history_source/信息学奥赛一本通/1.2.6.8.cpp
Normal file
103
history_source/信息学奥赛一本通/1.2.6.8.cpp
Normal file
@ -0,0 +1,103 @@
|
||||
#include<iostream>
|
||||
using namespace std;
|
||||
#include<vector>
|
||||
#include<cmath>
|
||||
#include<string>
|
||||
struct bigNum
|
||||
{
|
||||
vector<unsigned int> num;
|
||||
static const unsigned int BASE=100000000,W=8;//<2F><>λ<EFBFBD><CEBB>(100000000<30><30><EFBFBD><EFBFBD>)
|
||||
void clear(int size)
|
||||
{
|
||||
if(num.size()==0) num.push_back(0);
|
||||
while(num[0]==0&&num.size()-size>0) num.erase(num.begin());
|
||||
}
|
||||
bigNum operator=(string sr)//<2F><><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||
{
|
||||
num.clear();
|
||||
for(int i=0;i<sr.size();i++)
|
||||
{
|
||||
if(i%W==0) num.insert(num.begin(),0);
|
||||
num[0]=num[0]+(sr[sr.size()-1-i]-'0')*pow(10,i%W);
|
||||
}
|
||||
bigNum a;
|
||||
a.num=num;
|
||||
a.clear(0);
|
||||
return a;
|
||||
}
|
||||
bigNum operator+(bigNum b)
|
||||
{
|
||||
bigNum ans;
|
||||
ans.num=num;
|
||||
if(ans.num.size()<b.num.size())//ȷ<><C8B7>ans<6E><73>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD><EFBFBD>b<EFBFBD><62>λ<EFBFBD><CEBB>
|
||||
{
|
||||
bigNum li;
|
||||
li=ans;
|
||||
ans=b;
|
||||
b=li;
|
||||
}
|
||||
unsigned long long j=0;
|
||||
for(int ai=ans.num.size()-1,bi=b.num.size()-1;bi>=0;ai--,bi--)
|
||||
{
|
||||
j=ans.num[ai]+b.num[bi]+j;
|
||||
ans.num[ai]=j%BASE;//<2F><>λ
|
||||
j/=BASE;
|
||||
}
|
||||
if(j>0)
|
||||
{
|
||||
for(int ai=ans.num.size()-b.num.size()-1;ai>=0;ai--)
|
||||
{
|
||||
j=ans.num[ai]+j;
|
||||
ans.num[ai]=j%BASE;
|
||||
j/=BASE;
|
||||
}
|
||||
}//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
||||
if(j>0) ans.num.insert(ans.num.begin(),1);//<2F><>λ
|
||||
return ans;
|
||||
}
|
||||
};
|
||||
istream& operator>>(istream &in,bigNum& x)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
string s;
|
||||
char li;
|
||||
in.get(li);
|
||||
while(li>='0'&&li<='9')//<2F><>֤<EFBFBD><D6A4><EFBFBD><EFBFBD>ȡ<EFBFBD>Ƿ<EFBFBD><C7B7>ַ<EFBFBD>
|
||||
{
|
||||
s+=li;
|
||||
in.get(li);
|
||||
}
|
||||
x=s;//<2F><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||
return in;
|
||||
}
|
||||
ostream& operator<<(ostream &out,const bigNum &x)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
out<<x.num[0];
|
||||
for(int i=1;i<x.num.size();i++)//ȷ<><C8B7><EFBFBD><EFBFBD>8λ
|
||||
{
|
||||
if(x.num[i]<10) out<<"0000000";
|
||||
else if(x.num[i]<100) out<<"000000";
|
||||
else if(x.num[i]<1000) out<<"00000";
|
||||
else if(x.num[i]<10000) out<<"0000";
|
||||
else if(x.num[i]<100000) out<<"000";
|
||||
else if(x.num[i]<1000000) out<<"00";
|
||||
else if(x.num[i]<10000000) out<<"0";
|
||||
out<<x.num[i];
|
||||
}
|
||||
return out;
|
||||
}
|
||||
bigNum str_big(string sr)
|
||||
{
|
||||
bigNum ans;
|
||||
ans=sr;
|
||||
return ans;
|
||||
}
|
||||
int main()
|
||||
{
|
||||
int n;
|
||||
cin>>n;
|
||||
bigNum ans;
|
||||
ans="1";
|
||||
for(int i=0;i<n;i++) ans=ans+ans;
|
||||
cout<<ans<<endl;
|
||||
return 0;
|
||||
}
|
Reference in New Issue
Block a user