
提示文章寫完后目錄可以自動(dòng)生成如何生成可參考右邊的幫助文檔高精度模擬加法減法前言一、高精度加法的實(shí)現(xiàn)二、高精度減法的實(shí)現(xiàn)1.總結(jié)1、比如減法實(shí)現(xiàn)里面的刪除前導(dǎo)零沒(méi)有考慮到結(jié)果全是零的情況2、減法實(shí)現(xiàn)里沒(méi)有實(shí)現(xiàn)帶有前導(dǎo)零的輸入的處理前言大一新生學(xué)習(xí) C 算法記錄自己的學(xué)習(xí)過(guò)程。想要做一些內(nèi)容輸出來(lái)提高自己這個(gè)內(nèi)容是關(guān)于超出內(nèi)存范圍的高精度加法模擬。一、高精度加法的實(shí)現(xiàn)stringadd(string x,string y){string res;// res儲(chǔ)存最后返回的答案intcarry0;// carry儲(chǔ)存進(jìn)位intlenmax(x.size(),y.size());// 獲取兩個(gè)字符串中最長(zhǎng)的長(zhǎng)度f(wàn)or(inti0;ilen;i){if(carry0)// 如果沒(méi)有進(jìn)位就在末位加0res.push_back(0);intxi,yi;// xi,yi代表當(dāng)前對(duì)齊的if((int)x.size()-1-i0)// 判斷是否超過(guò)了最高位xi0;elsexix[x.size()-1-i]-0;// 沒(méi)超過(guò)的話就獲取該位的數(shù)字// 字符轉(zhuǎn)數(shù)字要減去0if((int)y.size()-1-i0)// 判斷是否超過(guò)了最高位yi0;elseyiy[y.size()-1-i]-0;// 同理intsumxiyicarry;// 當(dāng)前位次的加法是當(dāng)下位置的數(shù)字之和res[i]sum%100;// 加上位置的進(jìn)位 第一位置的進(jìn)位設(shè)置為0carrysum/10;// 總和除以10就是進(jìn)位的數(shù)字if(carry!0)// 如果進(jìn)位了就在后面加上進(jìn)位的數(shù)字res.push_back(carry0);}reverse(res.begin(),res.end());// 由于這個(gè)模擬是倒著儲(chǔ)存的 (如s[0]存的是個(gè)位數(shù))returnres;// 所以反轉(zhuǎn)字符串 最后輸出}二、高精度減法的實(shí)現(xiàn)1.stringsub(string x,string y){booloktrue;// 標(biāo)記結(jié)果的正負(fù)string res,s;// res 儲(chǔ)存最后返回的答案intlenmax(x.size(),y.size());// 獲取最長(zhǎng)if(x.size()y.size())// 保證 x 為大{for(inti0;ilen;i){if(x[i]y[i]){break;}if(x[i]y[i]){sx;xy;ys;okfalse;// 如果 x 不為大標(biāo)記為負(fù)數(shù)break;}}}elseif(x.size()y.size()){sx;xy;ys;okfalse;// 如果 x 不為大標(biāo)記為負(fù)數(shù)}intcarry0;// 獲取借位for(inti0;ilen;i){res.push_back(0);// 加法會(huì)進(jìn)位但是減法不會(huì)intxi,yi;if((int)x.size()-1-i0)xi0;elsexix[x.size()-1-i]-0;if((int)y.size()-1-i0)yi0;elseyiy[y.size()-1-i]-0;intsumxi-yicarry;res[i](sum10)%100;// 保證是正數(shù)carry(sum-9)/10;}for(intilen-1;i0;i--)// 減法會(huì)導(dǎo)致前導(dǎo)零我們?nèi)コ鼈冏?i 0{// 也就是到 i 1 是為了保留最后一個(gè)零這個(gè)地方我漏掉了是 AI 幫助我補(bǔ)全的if(res[i]0)res.pop_back();elsebreak;}reverse(res.begin(),res.end());// 同理是由個(gè)位到高位的儲(chǔ)存反轉(zhuǎn)字符串if(okfalse)res-res;returnres;}總結(jié)這是我關(guān)于高精度模擬的學(xué)習(xí)記錄還有很多不足。1、比如減法實(shí)現(xiàn)里面的刪除前導(dǎo)零沒(méi)有考慮到結(jié)果全是零的情況2、減法實(shí)現(xiàn)里沒(méi)有實(shí)現(xiàn)帶有前導(dǎo)零的輸入的處理感覺(jué)實(shí)現(xiàn)起來(lái)有些許繁瑣希望可以在編程學(xué)習(xí)方面越走越遠(yuǎn)吧。然后每天都發(fā)一些學(xué)習(xí)的內(nèi)容做內(nèi)容輸出來(lái)提升自己和鞭策自己學(xué)習(xí)bushi