大數運算模板

2021-07-10 03:02:46 字數 3133 閱讀 7591

#include

#include

#include

#include

using 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(void)

}

大數運算模板(C語言)

說明 大數相加 include include define maxn 100 int an1 maxn 10 int an2 maxn 10 char str1 maxn 10 char str2 maxn 10 int main 輸出 int pan 0 0 for i maxn i 0 i p...

高精度運算模板(大數加減乘除模板)

1.高精度加法模板 計算a b,a與b長度均 1e6 include include using namespace std vector add vector a vector b if t c push back t returnc int main 2.高精度減法模板 計算a b,長度均小於1...

大數四則運算模板

該模板能傳任意數字進去計算結果 不管是小算大的還是大的算小的都能得到正確結果 除法那裡只精確到小數點後10位數。乘法用加法來模擬 除法用減法來模擬 下面的注釋很詳細。include include using namespace std void string a,string b void del...