#include<iostream>
#include<vector>
#include<cstdio>
#include<map>
#include<cstring>
using namespace std;
string to_string(long long x)
{
string ans1,ans2;
while(x)
{
int tt=x%10;
ans1+=(tt+'0');
x/=10;
}
for(int i=ans1.length()-1;i>=0;i--)
ans2+=ans1[i];
return ans2;
}
struct BigInteger
{
static const int BASE=(int)1e8;
static const int WIDTH=8;
vector<int>s;
BigInteger(long long num=0){*this=num;}
BigInteger(const string &str){*this=str;}
BigInteger operator =(long long num)
{
s.clear();
do
{
s.push_back(num%BASE);
num/=BASE;
}while(num>0);
return *this;
}
BigInteger operator = (const string &str)
{
s.clear();
int x,len=(str.length()-1)/WIDTH+1;
for(int i=0;i<len;i++)
{
int end=str.length()-i*WIDTH;
int start=max(0,end-WIDTH);
sscanf(str.substr(start,end-start).c_str(),"%d",&x);
s.push_back(x);
}
return *this;
}
BigInteger operator + (const BigInteger &b)const
{
BigInteger c;
c.s.clear();
for(int i=0,g=0;;i++)
{
if(g==0&&i>=s.size()&&i>=b.s.size())break;
int x=g;
if(i<s.size())x+=s[i];
if(i<b.s.size())x+=b.s[i];
c.s.push_back(x%BASE);
g=x/BASE;
}
return c;
}
BigInteger operator *(BigInteger const& b) const
{
BigInteger answer;
for(int i=0;i<s.size();i++)
{
long long tmp;
for(int j=0;j<b.s.size();j++)
{
tmp=1LL*s[i]*b.s[j];
string t=to_string(tmp);
for(int x=(i+j);x!=0;x--)
{
string s="00000000";
t+=s;
}
answer=answer+BigInteger(t);
}
}
return answer;
}
};
ostream& operator << (ostream &out,const BigInteger& x)
{
out<<x.s.back();
for(int i=x.s.size()-2;i>=0;i--)
{
char buf[20];
sprintf(buf,"%08d",x.s[i]);
for(int j=0;j<strlen(buf);j++)
out<<buf[j];
}
return out;
}
istream& operator >>(istream &in,BigInteger& x)
{
string t;
in>>t;
x=t;
return in;
}
map<int,BigInteger>T;
int main()
{
//int fff=12345;
//cout<<to_string(fff)<<endl;
BigInteger x;
x=1;
for(int i=0;i<=1000;i++)
{
T[i]=x;
x=x*2;
}
int t;cin>>t;
while(t--)
{
int n;cin>>n;
cout<<T[n]<<endl;
}
}
C++ 大数类
最新推荐文章于 2021-12-26 03:06:06 发布