高精度加法 高精度減法

2021-06-21 23:58:47 字數 2181 閱讀 2605

雖然以前自己就學習過,但是自己打出來的**目測效率不高,也不夠精簡

因此學習一下eden裡面的這一題:big integer add&subtract

#ifndef _big_integer_

#define _big_integer_

#include #include using std::string;

using std::ostream;

// forward declaration

class biginteger;

// operators overloading

biginteger operator+(const biginteger& left, const biginteger& right);

biginteger operator-(const biginteger& left, const biginteger& right);

ostream& operator<<(ostream& out, const biginteger& bint);

class biginteger ;

#endif // _big_integer_

#include "biginteger.h"

#include #include using std::cout;

using std::string;

using std::ostream;

// default constructor

biginteger::biginteger()

// constructor

biginteger::biginteger(const string& number)

}// constructor

biginteger::biginteger(const biginteger& other)

}// destructor

biginteger::~biginteger()

// overload '<<'

ostream& operator<<(ostream& out, const biginteger& bint)

return out;

}// overload '+'

biginteger operator+(const biginteger& left,

const biginteger& right) else

// caculate

temp.data_ = new int[temp.size_+1];//加法充其量只能多增乙個數字,因此只需多開闢乙個

minsize = left.size_ + right.size_ - temp.size_;//得到小的那個size

for (int i = 0; i < temp.size_; i++) else

}temp.data_[temp.size_] = 0;//陣列中第size_項進行初始化

// deal with the carry

for (int i = 0; i < temp.size_; i++)

}if (temp.data_[temp.size_] > 0)

return temp;

}// overload '-'

// promise that left >= right

biginteger operator-(const biginteger& left,

const biginteger& right) else                             //已經初始化

}// deal with the carry

for (int i = 0; i < temp.size_-1; i++)

}if (temp.data_[temp.size_-1] != 0)//若陣列不為0,直接返回

return temp;

temp.size_--;

for (int i = temp.size_-1; i >= 0 ; i--) else

}if (temp.size_ == 0)

temp.size_ = 1;

return temp;

}

高精度計算 加法 減法

include using namespace std int main 大家肯定會說 這不就是最普通的a b問題嗎?你是不是來搞笑的?但是你有沒有想過這樣乙個問題 當a和b的資料過於大的時候怎麼辦呢?比unsigned long long還大 先讓我們回顧一下小學的加法豎式,如256 749 74...

高精度運算 加法 減法

高精度算是我高中期間沒有學明白的知識點之一,其實挺簡單的東西。核心思路是 按位模擬豎式運算 說白了就是模擬題。加法減法從低位到高位模擬,因為會進製借位 乘法也從低到高因為進製 除法要從高到低因為我們手算除法時也是從高到低保留餘數的。高精度減法 1 include2 using namespace s...

高精度減法,高精度乘法

高精度減法 oj資料偏弱如果新增乙個101 2就錯了,下面這一步是為了防止錯誤的 if a aa 0 可能出現第一位的1被借走的的情況,所以加乙個while找第乙個不是0的 while c i 0 i include include include include include include u...