大整數運算之 大整數加法 減法 乘法

2022-08-15 08:27:14 字數 2005 閱讀 4210

其實大整數的問題都是在像我們打草稿的時候列豎式一樣的,不要告訴我你不知道什麼叫豎式~!其實我開始也不知道它叫這個名字;

所謂豎式,就是你打草稿算算術的方法,小學知識;比如你寫 11+9:

11+  9

----------

20數a,b,求和,求差;數的長度不超過1000;

貼個**,先輸入乙個數,代表資料的組數n,然後輸入n組a b

#include using namespace std;

#define base 4

#define m 10000

char s1[1000],s2[1000];

int a[251],b[251],sum[251];

int max(int a,int b)

void trans(char *str, int *s) //將一串數字字元 轉化為大整數

} i += base;

s[k] = 0;

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

if(s[k])

s[0] = k;

else

s[0] = k-1;

} void prin(int *num)

}void copy(int *a,int *b) //b複製給a

int comp(int *a, int *b) //比較大整數大小,a>b返回1,ab[0])return 1;

if(a[0] < b[0])return -1;

for(int i = a[0]; i >= 1 ; i--)

return 0;

} void add(int *a,int *b, int *sum)

if((a[0]==1)&&(a[1]==0))

if (a[0] >= b[0])

else

//轉換為sum + d(即a、b的最大值和最小值);最終結果為sum

sum[sum[0] + 1] = 0; //存放可能出現的進製

for (i = 1; i <= d[0]; i++) //處理位數相同的

}

for (; i <= sum[0]; i++) //處理a、b中大的多出來的位數

else break;

} if (sum[sum[0]+1]>0)sum[0] = sum[0] + 1;

}void sub(int *a, int *b, int *ans)//大整數相減,預設a大於b

ans[i] -= d[i];

} for(; i < ans[0]; i++)

else break;

} if(!ans[ans[0]])

ans[0]--;

} void mult(int *a,int *b,int *ans)

} }//再次求餘進製,

// 2 9999 9999

// 2 9999 9999

//--------------

//step 1: 9999 9999

// 9999

// 0001 0002 9997 進製餘數9999 然後是(9999+9999)*9999,99970002

if(ans[k+1])

k++;

ans[0]=k;

}int main()

{ int t,k = 1;

cin>>t;

while(t--)

{ cin.get();

scanf("%s%s",s1,s2);

trans(s1,a); trans(s2,b);

add(a,b,sum);

printf("case %d:\n",k);

prin(a);

cout<<" + ";

prin(b);

cout<<" = ";

prin(sum);

cout<

大型整數運算 加法, 減法, 乘法

from 用int數模仿真整數的每乙個位,大於10的要進製,負數要借位。include include define max digit 500 大數運算 加法 int multiply int a,int b,int result 大數運算 乘法 int add int a,int b,int r...

c 大整數加法 減法 乘法

大整數加法 大整數減法 大整數乘法 大整數除法 還未寫 大整數的加法 先對資料進行預處理是兩個大整數的位數相等,位數少的那個數在高位補0,使兩數的位數相等,便於計算資料的進製,只需要在函式呼叫的結尾檢查一下最高為是否存在進製的情況,如果需要進製則只需要在最後將進製的數加入到返回值中。加法是對兩個數從...

大整數運算加法

比賽中常常會遇到大整數和高精度的問題,今天先寫乙個大整數的加法運算模板 只支援兩個非負正整數相加 放在這裡,後面會不斷更新。includeusing namespace std const int l 11000 只限兩個非負整數相加 string add string a,string b nb ...