• BigInteger


    BigInteger

    //============================================================================
    // Name        : test2.cpp
    // Author      : pprp
    // Version     :
    // Copyright   : Your copyright notice
    // Description : Hello World in C++, Ansi-style
    //============================================================================
    
    #include <iostream>
    #include <vector>
    #include <cstring>
    
    
    using namespace std;
    
    struct BigInteger
    {
    	static const int BASE=10000000;
    	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(size_t 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 += (const BigInteger& b){
    			*this = *this + b;
    			return *this;
    	 }
    
    };
    
    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(size_t 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 a,b;
    	cin >> a;
    	cin >> b;
    	a += b;
    	cout << a << endl;
    
    	return 0;
    }
    
  • 相关阅读:
    神通广大的CSS3选择器
    CF1153E Serval and Snake【构造】
    CF1153F Serval and Bonus Problem 【期望】
    李超线段树学习笔记
    Luogu5327【ZJOI2019】语言【树上差分,线段树合并】
    Luogu4191 [CTSC2010]性能优化【多项式,循环卷积】
    Codeforces Round #564 比赛总结
    CF917D Stranger Trees【矩阵树定理,高斯消元】
    【CTS2019】珍珠【生成函数,二项式反演】
    斯特林数学习笔记
  • 原文地址:https://www.cnblogs.com/pprp/p/8594849.html
Copyright © 2020-2023  润新知