摘要:字符串的長(zhǎng)度不超過(guò)。本題含有多組樣例輸入。保證字符串只含有字符輸出描述輸出求和后的結(jié)果示例輸入輸出解題思路本題通過(guò)字符串操作實(shí)現(xiàn)超高精度的整數(shù)加法。
作者:Steven
版權(quán)聲明:著作權(quán)歸作者所有,商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處
輸入兩個(gè)用字符串表示的整數(shù),求它們所表示的數(shù)之和。
字符串的長(zhǎng)度不超過(guò)10000。
本題含有多組樣例輸入。
輸入兩個(gè)字符串。保證字符串只含有"0"~"9"字符
輸出求和后的結(jié)果
輸入:
98765432101234567890
輸出:
11111111100
本題通過(guò)字符串操作實(shí)現(xiàn)超高精度的整數(shù)加法。首先輸入兩個(gè)字符串,并判斷長(zhǎng)短,長(zhǎng)字符串為被加數(shù),短字符串為加數(shù);設(shè)置進(jìn)位符,按長(zhǎng)字符串倒序開(kāi)始計(jì)算,當(dāng)短字符串當(dāng)前位大于等于0時(shí),說(shuō)明當(dāng)前處于加法階段,若兩數(shù)相加大于10,則進(jìn)位,刷新result字符串;當(dāng)加法結(jié)束后,還要考慮進(jìn)位,直到進(jìn)位完全結(jié)束,將剩下的長(zhǎng)字符串字符補(bǔ)位;最后別忘了分析下進(jìn)位符狀態(tài),若為true,說(shuō)明長(zhǎng)字符串最高位數(shù)字還要進(jìn)一下位,即前面多個(gè)1,完成。
#include #include using namespace std;string add(string s1, string s2){ string result,Long,Short; // 長(zhǎng)+短 if (s1.size() > s2.size()) { Long = s1; Short = s2; } else { Long = s2; Short = s1; } int j = Short.size() - 1; //進(jìn)位符 bool carry = false; for (int i = Long.size() - 1; i >= 0; --i) { // 加法階段 if (j >= 0) { int temp; if (carry) { temp = int(Long[i] - "0") + int(Short[j] - "0") + 1; } else { temp = int(Long[i] - "0") + int(Short[j] - "0"); } if (temp < 10) { result = char(temp + "0") + result; carry = false; } else { carry = true; temp -= 10; result = char(temp + "0") + result; } } // 進(jìn)位階段 else if (carry) { int temp = int(Long[i] - "0") + 1; if (temp < 10) { result = char(temp + "0") + result; carry = false; } else { carry = true; temp -= 10; result = char(temp + "0") + result; } } // 補(bǔ)數(shù)階段 else { result = char(Long[i]) + result; } --j; } // 若最后一次操作有進(jìn)位符的話(huà),說(shuō)明最終字符串還要在前面加個(gè)1,進(jìn)位 if(carry) { result="1"+result; } return result;}int main(){ string s1, s2; while (cin >> s1 >> s2) { cout << add(s1, s2) << endl; } return 0;}
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/119104.html
摘要:要求輸出所有火車(chē)出站的方案,以字典序排序輸出。輸入描述有多組測(cè)試用例,每一組第一行輸入一個(gè)正整數(shù)輸出描述輸出以字典序從小到大排序的火車(chē)出站序列號(hào),每個(gè)編號(hào)以空格隔開(kāi),每個(gè)輸出序列換行,具體見(jiàn)。 作者:翟天保Steven 版權(quán)聲明:著作權(quán)歸作者所有,商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明...
摘要:前言最近,朋友問(wèn)了我這樣一個(gè)問(wèn)題在中的運(yùn)算結(jié)果,為什么是這樣的雖然我告訴他說(shuō),這是由于浮點(diǎn)數(shù)精度問(wèn)題導(dǎo)致的。由于可以用階碼移動(dòng)小數(shù)點(diǎn),因此稱(chēng)為浮點(diǎn)數(shù)。它的實(shí)現(xiàn)遵循標(biāo)準(zhǔn),使用位精度來(lái)表示浮點(diǎn)數(shù)。 showImg(https://segmentfault.com/img/remote/1460000018981071); 前言 最近,朋友 L 問(wèn)了我這樣一個(gè)問(wèn)題:在 chrome 中的運(yùn)算...
摘要:后來(lái)我看了下,確實(shí)有這么一個(gè)擴(kuò)展庫(kù),處理任意精度數(shù)字,對(duì)于任意精度的數(shù)學(xué),提供了支持用字符串表示的任意大小和精度的數(shù)字的二進(jìn)制計(jì)算。 用編程語(yǔ)言做計(jì)算,很多時(shí)候浮點(diǎn)數(shù)精度都是困擾過(guò)我的問(wèn)題,即便是剛學(xué)PHP的新手也會(huì)在群里問(wèn)為什么我的計(jì)算結(jié)果明顯不對(duì),而我們總是老態(tài)龍鐘的丟出一句浮點(diǎn)數(shù)計(jì)算都存在精度問(wèn)題,并沒(méi)有提出過(guò)什么實(shí)質(zhì)性的改善。比如下面的計(jì)算 0.57*100: zhgxun-p...
摘要:標(biāo)準(zhǔn)二進(jìn)制浮點(diǎn)數(shù)算法就是一個(gè)對(duì)實(shí)數(shù)進(jìn)行計(jì)算機(jī)編碼的標(biāo)準(zhǔn)。然后把取出的整數(shù)部分按順序排列起來(lái),先取的整數(shù)作為二進(jìn)制小數(shù)的高位有效位,后取的整數(shù)作為低位有效位。 浮點(diǎn)運(yùn)算JavaScript 本文主要討論JavaScript的浮點(diǎn)運(yùn)算,主要包括 JavaScript number基本類(lèi)型 二進(jìn)制表示十進(jìn)制 浮點(diǎn)數(shù)的精度 number 數(shù)字類(lèi)型 在JavaScript中,數(shù)字只有numb...
摘要:而所有的數(shù)據(jù)運(yùn)算都是采用補(bǔ)碼進(jìn)行的。補(bǔ)碼解決負(fù)數(shù)加法運(yùn)算正負(fù)零問(wèn)題,彌補(bǔ)了反碼的不足。通過(guò)使用訪問(wèn)修飾符可以使實(shí)例變量對(duì)子類(lèi)可見(jiàn)暫時(shí)在學(xué)習(xí)基礎(chǔ)語(yǔ)法知識(shí)的時(shí)候可以暫時(shí)忽略實(shí)例變量這部分內(nèi)容,這部分內(nèi)容主要被使用在面向?qū)ο蟮牟糠?,但是極其重要。 showImg(https://segmentfault.com/img/remote/1460000019264541?w=600&h=242)...
閱讀 1409·2021-10-11 10:58
閱讀 1489·2021-09-04 16:41
閱讀 684·2019-08-30 15:55
閱讀 810·2019-08-29 18:46
閱讀 3148·2019-08-29 14:05
閱讀 3536·2019-08-26 14:00
閱讀 2461·2019-08-26 13:53
閱讀 3184·2019-08-26 13:29