大整數的相加 相減和相乘

2021-07-14 03:12:52 字數 1209 閱讀 1243

#include 

#include

using

namespace

std;

string _sub(string s1, string s2);

//比較兩個正數的大小

inline

int comparedata(const

string &s1,const

string &s2)

//相加

string _add(string s1, string s2)

//如果s1為負數,s2為正數,則為s2減s1的絕對值

else

}else

//如果s1和s2都為正數,則相加

else

} else

if (len1 > len2)

}string res;

int int1 = 0;

int int2 = 0;

for (int i=s1.length()-1; i>=0; --i)

if (int2)

return res;}}

}//相減

string _sub(string s1, string s2)

else

//s1與s2都為正數

else

//s1 == s2

else

if(0 == comparedata(s1,s2))

//s1和s2都為正數,且s1>s2

else

else

}int i = milen-1;

//如果最後還有借位

//s1>s2,如果i<0,則s1的長度和s2的長度相等,則最後肯定沒有借位

//如果i=0,則表示s1比s2的長度大1

if(i == 0 && s1_copy[i]<'0')

//如果i>0,則表示s1比s2的長度至少大於二

while (i>0 && s1_copy[i]<'0')

//去除結果中多餘的前導0

s1_copy.erase(0,s1_copy.find_first_not_of('0'));

return s1_copy;}}

}return

"";}

int main()

update 2016.06.27

相乘見我的另外一篇部落格:相乘、

大整數相加和大整數相乘

大整數運算是我們經常會碰到的演算法面試題之一。大整數運算往往會導致整形溢位而不能在ide直接通過四則運算執行。下面是python3寫的大整數相乘和大整數相加函式。原理都較為相似,模擬手寫演算的場景從後往前計算並且考慮進製。def multy n1,n2 n1 str n1 1 n2 str n2 1...

大數 相加 相減 相乘)

把乙個數當成乙個字串進行運算 大數相加 include include include char s1 2000 char s2 2000 void add1 int main void add1 去除前邊多餘的零,從第乙個不是零的位置輸出 for i 1999 i 0 i if num1 i 0 ...

大數相乘演算法(相加,相減)

所謂大數相乘,就是指數字比較大,相乘的結果超出了基本型別的表示範圍,所以這樣的數不能夠直接做乘法運算。假設有a和b兩個大數,位數分別為a和b。根據我們平常手動計算乘法的方式可以看出,最終的結果的位數c一定小於等於a b。由於數字無法用乙個整形變數儲存,很自然的想到用字串來表示一串數字。然後按照乘法的...