今天看了《演算法競賽和入門基礎》中的大整數類後,我自己也試著去實現乙個大整數類,並且完成了整數的四則運算和邏輯運算功能。學習到了很多東西。在此分享一下。**是c++的。用了c++中的stl模板類vector。
大整數類的資料儲存結構如下所示:
static const int base=100000000;
static const int width=8;
std::vectors;
下面我在書裡原有的基礎上繼續編寫了乘除和減法的**。
class biginteger
//long long型整數賦值方法
biginteger operator = (long long num)
while(num);
return *this;
}
//string型別賦值方法
biginteger operator = (const std::string &str)
int m=2*max;
while(temp[m]==0)
m--;
biginteger another;
another.s.clear();
int len=(m-1)/width+1;
for(int i=0;i=0;i--)
ss<=0;i--)
ssfor(int i=0;id[j]) //第一次大就表示operand1 > operand2
else if(c[i+j]=0;i--)
if(s[i]!=b.s[i])
return s[i](const biginteger& b) const
bool operator <= (const biginteger& b) const
bool operator >= (const biginteger& b) const
bool operator == (const biginteger& b) const
friend std::ostream& operator << (std::ostream& out,const biginteger& x)
};
全部貼出來是因為我太懶了,見諒啊。
大整數類除了這個實現,如果大家還有其他實現方法,不妨也分享一下,這裡寫出來只是拋磚引玉。
大整數四則運算
儲存方式 規定 整數的高位儲存在陣列的高位,整數的低位儲存在陣列的低位。例如 235813,則d 0 3,d 1 1,d 2 8.此方式以此類推。但注意 通常輸入為字串str 0 2 str 1 3 str 2 5 讀入之後需要反轉一下。加法運算 模板 include include struct ...
大整數四則運算
電腦可以處理很大的數。但是更大的數字運算由於資料型別占有的有限並不能表示出來,所以需要對很大的數字進行大整數處理,光是聽著就感覺令人心潮澎湃呢。核心思想 陣列存數,乙個單元存一位 下面是大整數儲存,比較的模板 struct bign bign change char str return a 比較兩...
大整數的四則運算
由小學時候的加法運算可以歸納出對其中一位進行加法的步驟 將該位上的兩個數字和進製相加,得到的結果取個位數作為該位結果,取十位數作為新的進製。高精度加法的做法與此完全相同,可以直接來看實現的 程式 include include 定義乙個結構體儲存大整數 struct bign 將整數轉換為bign ...