大數運算之加減乘除

2021-08-09 19:29:32 字數 2585 閱讀 6788

我們都知道計算機能夠儲存的各種型別數的大小是有限的,比如int型在32位的情況下範圍是從-2^31~2^31-1,那麼如果我們要計算的數非常的大,我們該如何做呢?那樣便需要運用到大數運算。

大數運算本質上來說是模仿人們進行筆算時的操作,將人們筆算時的操作通過**來實現,從而達到實現大數執行的結果。

c++**如下:

#include

#include

using

namespace

std;

const

int max =10001;

intmain

() for(int i= 0 ; i < lenb; i ++)

int num = 0;

//當一方數字每位都計算完後結束迴圈

while(lena > 0 && lenb > 0)

//位數較多的直接加到sum陣列後面

while(lena > 0)

while(lenb > 0)

//進製操作,sum[i]>10則進製

for(int i = 0 ; i < num ; i ++ )

}//判斷最高位是否進製

if(sum[num] != 0)

for(int i = num -1 ; i >= 0 ; i -- )

printf("\n");

return

0;}

c++**如下:

#include

#include

using

namespace

std;

const

int max =10001;

intmain

() for(int i= 0 ; i < lenb; i ++)

int num = 0;

//判斷哪個數更大

if(lena > lenb || (aa[0] > bb[0] && lena == lenb))

while(lena > 0)

}else

while(lenb > 0)

}//若相減小於零,則向前借位

for(int i = 0 ; i < num ; i ++ )

}//新增正負號

if(flag)

for(int i = num -1 ; i >= 0 ; i -- )

printf("\n");

return

0;}

c++**如下:

#include

#include

using

namespace

std;

const

int max = 10001;

intmain

() for (int i = 0 ; i < lenb; i ++ )

memset(sum,0,sizeof(sum));

int num;

for(int j = lenb - 1 ; j >= 0 ; j --)

}for (int i = 0 ; i < num ; i ++ )

sum[i + 1] += sum[i] /10 ;

sum[i] = sum[i] % 10;

}for (int i = num- 1 ; i >= 0 ; i-- )

printf("\n");

return

0;}

c++**如下:

#include

#include

using

namespace

std;

const

int max = 10001;

intsub

(int * aa , int * bb , int lena , int lenb)

else

if(lena == lenb)

}for(int i = 0; i < lena ; i ++)

}for (int i = lena -1 ; i >= 0 ; i--)

return0;}

intmain

() for(int i = lenb - 1 , j = 0 ; i >= 0 ; i -- ,j ++)

//被除數小於除數,為0

if(lena < lenb)

maxlen = lena;

int n = lena - lenb;

//用於將bb陣列裡對應最高位的數移至aa陣列最高位位置

for(int i = lena - 1 ; i >= 0 ; i --)

else

}lenb = lena;

int t;

for (int i = 0 ; i <= n ; i ++ )

}int i;

for( i = maxlen -1 ;i >= 0 ;i--)

if(i >= 0)

}else

printf("\n");

return

0;}

大數運算(加減乘除)

加法 void add char a,char b,char d for i len i 1 i if c i 48 len else break for i 0 i len i d i c len i view code 減法1 d2 d1,如果需要比較大小自己加乙個不麻煩。void dec ch...

大數運算 加減乘除

大數運算產生的原因就是因為int,double型別表示範圍都有限,無法表示過長的數字比如 2345468454567865415467864453437。因此也就無法進行四則運算,為了實現這種運算,大數運算產生了。其實也很簡單,既然基本資料型別放不下這些資料,那就用陣列存放唄。定義char c 10...

大數運算 (加減乘除)

大數加減乘除應該都不陌生了吧,原來只寫過大數加法,弱弱的我重溫了一下這種,發現還是蠻有意思的。不知道有沒有感覺到,解決這類問題進製思路都挺簡單的,主要錯的地方就是最後細節的處理,前導0的去除,型別轉換等之類的問題。都是按整數輸入資料 沒有考慮小數點之類的輸入和負數的情況。大數加法 hdu1002 l...