刘汝佳大数模板(只含加法)
发布时间:2020-12-14 02:45:41 所属栏目:大数据 来源:网络整理
导读:#include bits/stdc++.husing namespace std;struct BigInteger{ static const int BASE = 100000000; static const int WIDTH = 8; vectorint s; BigInteger(long long num=0) {*this = num;} BigInteger operator =(long long num){ s.clear(); do{ s.push
#include <bits/stdc++.h> using namespace std; struct BigInteger{ static const int BASE = 100000000; static const int WIDTH = 8; vector<int> s; BigInteger(long long num=0) {*this = num;} 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; } }; 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 s; if(!(in>>s)) return in; x=s; return in; } int main() { BigInteger x,y,p; cin>>x>>y; p=x+y; cout<<p<<endl; return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |