c++加法高精度算法的簡略完成。本站提示廣大學習愛好者:(c++加法高精度算法的簡略完成)文章只能為提供參考,不一定能成為您想要的結果。以下是c++加法高精度算法的簡略完成正文
c++高精度算法,關於老手來講照樣一年夜挑釁,只需戰勝它,你就開啟了編程的新篇章,算法。
我發的這個代碼其實不是很好,占用內存許多並且運轉時光很長(不跨越1秒),然則很好懂得,很合適老手
高精算法的實質就是把數組編程字符串,然後將字符串像豎式一樣加起來:
a+b高精度算法 #include <iostream> #include <cmath> #include <cstring> using namespace std; int main() { char a[100010],b[100010]; cin>>a>>b;//輸出兩個字符串。 int c[100010],d[100010],h[100010],n1,n2,i,jw=0;//設三個正整形數組,來寄存兩個加數,一個寄存和。n1n2來寄存字符串a、b的長度。 n1=strlen(a);//將字符串a的長度存到n1外面 n2=strlen(b); for(i=0;i<n1/2;i++) swap(a[i],a[n1-1-i]);//更換加數字符串的次序,如許可使列位對齊,就像加法豎式一樣。 for(i=0;i<n2/2;i++) swap(b[i],b[n2-1-i]);//同上 for(i=0;i<n1;i++) c[i]=a[i]-'0';//把字符串c轉化到數組a中,個中-‘0'就是轉化方法 for(i=0;i<n2;i++) d[i]=b[i]-'0'; if(n1>n2) swap(n1,n2); //比擬兩個數組長度,選長的做for輪回的前提。 for(i=0;i<n2;i++) h[i]=c[i]+d[i]; for(i=0;i<n2;i++) { if(h[i]>=10) { jw=h[i]/10; //取進位 h[i]=h[i]-10;//去失落進位 h[i+1]++; } if(jw>0) { jw=0;//初始化進位 } } if(h[n2]!=0) cout<<h[n2];//斷定最高位能否有進位,有則輸入。 for(i=n2-1;i>=0;i--) cout<<h[i]; }
以上就是小編為年夜家帶來的c++加法高精度算法的簡略完成的全體內容了,願望對年夜家有所贊助,多多支撐~