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