结构体重载运算符版高精度!

神奇的高精度:

支持高精度加法,大于小于比较,赋值。

用了 *this

#include
#include
#include
using namespace std;
#define maxn 30
struct bigint
{
    int a[maxn];
    bigint()
	{
		memset(a,0,sizeof(a));
	}
    bigint& operator =(const string s)
    {
        int k=0;
        for(int i=s.size()-1;i>=0;i--)
        {
            k++;
            a[k]=s[i]-'0';
        }
        a[0]=s.size();
        return *this;
    }
    bigint& operator =(const int a)
    {
        int num=a,i=0;
        while(num!=0)
        {
            i++;
            this->a[i]=num%10;
            num/=10;
        }
        this->a[0]=i;
        return *this;
    }
    bigint operator +(const bigint b)
    {
        bigint c;
        c.a[0]=max(a[0],b.a[0]);
        for(int i=1;i<=c.a[0];i++)
        {
            c.a[i]+=(a[i]+b.a[i]);
            c.a[i+1]+=c.a[i]/10;
            c.a[i]%=10;
        }
        if(c.a[c.a[0]+1]>0)
        c.a[0]++;
        return c;
    }
    bool operator <(const bigint b)
    {
        if(this->a[0]a[0]>b.a[0])
        	return false;
        for(int i=b.a[0];i>=1;i--)
        {
            if(this->a[i]!=b.a[i])
            return this->a[i]( bigint b)
    {
        return b<*this;    
    }
}; 


你可能感兴趣的:(模板)