大數運算(加減乘除)

2021-06-18 00:17:13 字數 2693 閱讀 1190

加法

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(char *d1, char *d2, char *out

)

while(len_max > 0

)

if(last_j)

out[0] ='1'

;

else

out[0] ='0'

;}

view code

乘法

void multiply(char* a,char* b,char*c)

}i=0

;

while(s[i]==0) //

跳過頭部0元素

i++;

if(i==ca+cb) //

s[i]全為0

i--;

for (j=0;i)

c[j]=s[i]+'0'

; c[j]='\0'

; free(s);

}

view code

/*高精度除低精度求商模板*/

/*大數除法 ------除數為int範圍*/

#include#include

#include

#define max 1000#include

#define n 1000

using

namespace

std;

void division(char * src,int

n)

else

//不夠除,修改餘數

}int j=0

;

while(dest[j]=='0'

) j++;

if(j==k)

j--;

for(i=j;i)

cout

<

cout

<

}int

main()

return0;

}

view code

/*大數除法---高精度除高精度*/

/*1.a.size

#include#include

#include

#define n 2000

using

namespace

std;

//判斷a.size 與b.size 的關係 以及做減法

int judge(char a,int a1,char b,int

b1) }

for(i=0;i//

前提b中b1---a1部分必須為'0'

}for(i=a1-1;i>=0;i--) //

返回被除數的長度

if(a[i]!='0'

)

return (i+1

);

return

0;//

a.size==b.size&&a=b的情況

}string division(string a,string

b) b_len=temp_len;

/********************************************

*//*

加快除法的部分

*//*

******************************************

*/for(j=0;j<=ntimes;j++)

}/********************************************

*//*

處理最後結果進製部分

*//*

*******************************************

*/for(i=0;i)

if(ans[i]>=10

)

/********************************************

*//*

返回string型別

*//*

*******************************************

*/int k=n-1

;

string c=""

;

while(ans[k]==0&&k>0

) k--;

for(i=k;i>=0;i--)

c+=(ans[i]+'0'

);

/********************************************

*/returnc;}

intmain()

return0;

}

view code

大數運算 加減乘除

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

大數運算 (加減乘除)

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

大數運算之加減乘除

我們都知道計算機能夠儲存的各種型別數的大小是有限的,比如int型在32位的情況下範圍是從 2 31 2 31 1,那麼如果我們要計算的數非常的大,我們該如何做呢?那樣便需要運用到大數運算。大數運算本質上來說是模仿人們進行筆算時的操作,將人們筆算時的操作通過 來實現,從而達到實現大數執行的結果。c 如...