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++加法高精度算法的簡略完成的全體內容了,願望對年夜家有所贊助,多多支撐~