zoukankan      html  css  js  c++  java
  • 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;
    }
    
  • 相关阅读:
    Apache Common-IO 使用
    Apache Compress-使用
    使用JavaConfig方式-Spring 基础学习
    设计模式-策略模式
    logback mybatis 打印sql语句
    oracle 迭代查询
    使用 Dom4j 将 XML 转换为 MAP
    Java连接Access数据库的那些坑
    如何从Maven中央存储库下载?
    sublime构建各个编译环境
  • 原文地址:https://www.cnblogs.com/pprp/p/8594849.html
Copyright © 2011-2022 走看看