c++加法高精度演算法的簡單實現_C 語言

來源:互聯網
上載者:User

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++加法高精度演算法的簡單實現的全部內容了,希望對大家有所協助,多多支援雲棲社區~

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.