字串實現加法和乘法

2021-08-04 19:19:23 字數 1766 閱讀 3054

#include 

#include

using

namespace

std;

string add(string strleft, string strright)

for(string::size_type i = 0; i < strright.size(); ++i)

int carry(0);

string::size_type maxbits = max(strleft.size(), strright.size()) + 1;

string strresult(maxbits, 0);

int i = maxbits - 1;

int j = strleft.size() - 1;

while(j >= 0)

i = maxbits - 1;

j = strright.size() - 1;

for( ;j >= 0; --j)

for(string::size_type i = 0; i < strresult.size(); ++i)

if(strresult[0] == '0')

return

string(strresult.begin() + 1, strresult.end());

else

return strresult;

}int main()

}

/*

* 對於大數,範圍超過了最大整數的時候,通過字串在實現資料的乘法

*/#include

#include

#include

using

namespace

std;

//求兩個大數的乘積(兩數均為正數)

string getproductoftwobignum( string strnumleft, string strnumright )

//轉換為數字

for( string::size_type i = 0; i < strnumleft.size(); ++i )

for( string::size_type i = 0; i < strnumright.size(); ++i )

string::size_type nmaxbits = strnumleft.size() + strnumright.size() + 1;//最大位數,多增加一位,便於編碼

string strproduct(nmaxbits, 0);

char sztemp = 0;//每位乘積,輔助變數

char szcarraytemp = 0;//進製資訊

for( int i = strnumright.size() - 1; i >= 0; --i )

} //返回遍歷strproduct,從而取出計算的結果

string strresult;

string::size_type k = 0;

while( k < strproduct.size() && strproduct[k] == 0 )

for( ; k < strproduct.size(); ++k )

if ( strresult.empty() )

return strresult;

} int main()

return

0;

}

以字串的形式完成加法和乘法運算

問題描述和思路 當運算的數字過大時,會溢位範圍,導致最後的結果出錯。php種整型數的字長和平台有關,32 位平台下的最大值通常最大值是大約二十億,64 位平台下的最大值通常是大約 9e18。在php中,當數字超出整型範圍時,會自動將其轉換為浮點型,浮點數的字長和平台相關,通常最大值是 1.8e308...

字串加法

輸入兩個字串a和b,字串內容為二進位制數字,求兩個字串相加的結果,加法計算方法以二進位制方式計算,並返回對應的字串結果。要求程式盡可能的高效。示例如下 param a 1101 param b 1100 return 11001 public string add string a,string b...

PHP 字串加法運算(大數加法)

請設計乙個演算法能夠完成兩個用字串儲存的整數進行相加操作,對非法的輸入則返回error 輸入描述 輸入為一行,包含兩個字串,字串的長度在 1,100 輸出描述 輸出為一行。合法情況輸出相加結果,非法情況輸出error 示例1 輸入123 123 abd 123 輸出246 error 字串加法運算 ...