#include using namespace std; #include #include #include struct bigNum { vector num; static const unsigned int BASE=100000000,W=8;//进位制(100000000进制) 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)//用字符串赋值 { num.clear(); for(int i=0;i=0;ai--,bi--) { j=ans.num[ai]+b.num[bi]+j; ans.num[ai]=j%BASE;//进位 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; } }//处理连续进位 if(j>0) ans.num.insert(ans.num.begin(),1);//进位 return ans; } }; istream& operator>>(istream &in,bigNum& x)//定义输入流 { string s; char li; in.get(li); while(li>='0'&&li<='9')//保证不读取非法字符 { s+=li; in.get(li); } x=s;//利用字符串赋值 return in; } ostream& operator<<(ostream &out,const bigNum &x)//定义输出流 { out<>n; bigNum ans; ans="1"; for(int i=0;i