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;
    }
    
  • 相关阅读:
    python操作MYSQL时防止SQL注入
    防止SQL注入的一些解决方法
    Gitbook 学习链接
    MySQL_编码utf8_bin和utf8_general_ci的区别
    使用linux脚本shell检查大数据各节点服务是否运行正常
    shell脚本监测elasticsearch集群节点
    Filebeat+Kafka+Logstash+ElasticSearch+Kibana搭建日志收集系统
    python中集合用法大全
    python常用内置函数
    跨模块全局变量的使用问题
  • 原文地址:https://www.cnblogs.com/pprp/p/8594849.html
Copyright © 2011-2022 走看看