高精度加法是高精度演算法裡面最容易思考的乙個;其實現過程並不難;注意的地方應該是進製的問題;
思路:我們可以設兩個陣列a[10090],b[10090],這兩個陣列的作用是用來儲存高精度數的數字;
string型別字串str1,str2(用來輸入資料);
然後貼**
#include
#include
#include
#include
#include
#include
using
namespace std;
int a[
10090
],b[
10090];
intmain()
int n2=str2.
length()
;for
(int i=
1;i<=n2;i++
)int len;
len=
(n>n2?n:n2)
;//len的值是n與n2中較大的;
//我們不需要知道a,b陣列哪個長度較長,我們只需要用a陣列來進行相加操作;
for(
int i=
1;i<=len;i++)if
(a[len+1]
)//兩個數相加,可能出現進1位的可能;
len++
;for
(int i=len;i>=
1;i--
)//輸出;
printf
("\n");
return0;
}
高精度減法比加法要麻煩一點;具體表現在需要考慮借位的問題
先貼一波**,明天再更新~
#include
#include
#include
#include
#include
#include
using
namespace std;
int a[
190044
],b[
189449];
intmain()
int n2=str2.
length()
;for
(int i=
1; i<=n2; i++
)//這裡和加法是一樣的
int c=0;
if(n==n2)
//這裡主要是通過c的值來判斷a,b的取值哪個更大;
else
if(a[i]
>b[i])}
if(!c)printf
("0\n");
//如果a,b的長度相等且c還為0,則這兩個值相等}if
(n>n2||c==2)
//這裡是a>b的情況下
}while
(!a[n]
)n--
;//這裡是去掉前導0;
for(
int i=n; i>=
1; i--)}
else
if(n2>n||c==1)
//這裡是b>a的情況,同上;
}while
(!b[n2]
)n2--
;printf
("-");
//注意細節;
for(
int i=n2; i>=
1; i--)}
printf
("\n");
return0;
}
這個**並不完美;在做的過程中遇到了各種各樣的錯誤,然而這些錯誤是粗心導致,以至於糊里糊塗wa了幾發;貼在這裡引以為戒;
#include
using
namespace std;
intcompare
(string s1,string s2)
;int
main()
} a[0]
++;while
((a[a[0]
]==0)
&&(a[0]
>1)
) a[0]
--;for(i=a[0]
;i>=
1;i--
) cout<; cout<}else
} b[0]
++;while
((b[b[0]
]==0)
&&(b[0]
>1)
) b[0]
--;for(i=b[0]
;i>=
1;i--
) cout<; cout<}return0;
}int
compare
(string s1,string s2)
//比較字串(兩個數)數字的大小,大於等於返回0,小於返回1。
return0;
//如果長度相同,每一位也一樣,就返回0,說明相等
}
高精度加法 高精度減法
雖然以前自己就學習過,但是自己打出來的 目測效率不高,也不夠精簡 因此學習一下eden裡面的這一題 big integer add subtract ifndef big integer define big integer include include using std string usin...
高精度演算法 加法,減法,乘法
高精度演算法 日期 11月10日 include includevoid add char a,char b void sub char a,char b void mul char a,char b int main n2 202 scanf s s n1,n2 陣列名稱為首位址 add n1,n...
高精度計算 加法 減法
include using namespace std int main 大家肯定會說 這不就是最普通的a b問題嗎?你是不是來搞笑的?但是你有沒有想過這樣乙個問題 當a和b的資料過於大的時候怎麼辦呢?比unsigned long long還大 先讓我們回顧一下小學的加法豎式,如256 749 74...