高精度模板

2021-06-25 20:11:33 字數 3055 閱讀 5696

#include#include#include#includeusing namespace std;

#define maxn 9999

#define maxsize 10

#define dlen 4

class bignum

bignum(const int); //將乙個int型別的變數轉化為大數

bignum(const char*); //將乙個字串型別的變數轉化為大數

bignum(const bignum &); //拷貝建構函式

bignum &operator=(const bignum &); //過載賦值運算子,大數之間進行賦值運算

friend istream& operator>>(istream&, bignum&); //過載輸入運算子

friend ostream& operator<<(ostream&, bignum&); //過載輸出運算子

bignum operator+(const bignum &) const; //過載加法運算子,兩個大數之間的相加運算

bignum operator-(const bignum &) const; //過載減法運算子,兩個大數之間的相減運算

bignum operator*(const bignum &) const; //過載乘法運算子,兩個大數之間的相乘運算

bignum operator/(const int &) const; //過載除法運算子,大數對乙個整數進行相除運算

bignum operator^(const int &) const; //大數的n次方運算

int operator%(const int &) const; //大數對乙個int型別的變數進行取模運算

bool operator>(const bignum & t)const; //大數和另乙個大數的大小比較

bool operator>(const int & t)const; //大數和乙個int型別的變數的大小比較

void print(); //輸出大數

};bignum::bignum(const int b) //將乙個int型別的變數轉化為大數

a[len++] = d;

}bignum::bignum(const char*s) //將乙個字串型別的變數轉化為大數

}bignum::bignum(const bignum & t) : len(t.len) //拷貝建構函式

bignum & bignum::operator=(const bignum & n) //過載賦值運算子,大數之間進行賦值運算

istream& operator>>(istream & in, bignum & b) //過載輸入運算子

b.a[count]=sum;

count++;

}b.len =count++;

return in;

}ostream& operator<<(ostream& out, bignum& b) //過載輸出運算子

return out;

}bignum bignum::operator+(const bignum & t) const //兩個大數之間的相加運算

}if(t.a[big] != 0)

t.len = big + 1;

else

t.len = big;

return t;

}bignum bignum::operator-(const bignum & t) const //兩個大數之間的相減運算

else

big=t1.len;

for(i = 0 ; i < big ; i++)

else

t1.a[i] -= t2.a[i];

}t1.len = big;

while(t1.a[len - 1] == 0 && t1.len > 1)

if(flag)

t1.a[big-1]=0-t1.a[big-1];

return t1;

}bignum bignum::operator*(const bignum & t) const //兩個大數之間的相乘運算

else

}if(up != 0)

ret.a[i + j] = up;

}ret.len = i + j;

while(ret.a[ret.len - 1] == 0 && ret.len > 1)

ret.len--;

return ret;

}bignum bignum::operator/(const int & b) const //大數對乙個整數進行相除運算

ret.len = len;

while(ret.a[ret.len - 1] == 0 && ret.len > 1)

ret.len--;

return ret;

}int bignum::operator %(const int & b) const //大數對乙個int型別的變數進行取模運算

return d;

}bignum bignum::operator^(const int & n) const //大數的n次方運算

m-=i;

ret=ret*t;

if(m==1)

ret=ret*(*this);

}return ret;

}bool bignum::operator>(const bignum & t) const //大數和另乙個大數的大小比較

else

return false;

}bool bignum::operator >(const int & t) const //大數和乙個int型別的變數的大小比較

void bignum::print() //輸出大數

cout << endl;

}int main()

}

高精度模板

include include include include include using namespace std const int maxn 1000 struct bign bign operator const char num 過載運算子 bign const char num 支援初...

高精度模板

include include include includeusing namespace std define maxn 9999 define maxsize 10 define dlen 4 class bignum 建構函式 bignum const int 將乙個int型別的變數轉化為大...

高精度模板

本模板資瓷正數範圍內的以下操作,不資瓷負數 其實加乙個符號判定就可以了 打鉤 表示直接資瓷,打叉x表示不直接資瓷,詳見括號。高精度 整數 x 最 的操作,懶得打,也許以後會補上?高精度 高精度 高精度 整數 高精度 高精度 高精度 整數 高精度 高精度 高精度 整數 高精度 高精度 base調成10...