#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。由於數字無法用乙個整形變數儲存,很自然的想到用字串來表示一串數字。然後按照乘法的...