特大整數相加

2021-06-26 00:24:33 字數 1117 閱讀 2108

一  特大整數描述

int和long作為基本的整數型別,取值範圍和位數直接相關。如果是n位整數的話,最高位表示符號位,剩下的n-1位以補碼形式表示絕對值,因此範圍是整數區間[-2^(n-1),2^(n-1))。int和long並沒有明確位數,一般而言,32位機的int是32位的,於是範圍是[-2^31, 2^31)也就是[-2147483648, -2147483648)。但是如果要做十幾位或者二十幾位的大數相加,int和long就實現不了。這個時候我們可以這樣做,輸入兩大串數放入2個字元陣列中,我們都知道,只要給字元數字減去48或者減去'0'就可以得到整數型別。

二 特大整數的演算法分析

1、取得兩個字串的長度

2、把兩個的長度做比較,並得出較長的長度,及較短的長度

3、把長度較短的加數字串,在左面補0,使之與較長的字串一樣長

4、從最低(個)位,乙個個數的取出來相加,當然首先得轉換為整型

5、設定進製,如果兩個數相加及加上進製大於等於10,並且這不是最左邊乙個字元相加,相加結果等於   (取 出 1+取出2+進製)-10,並把進製設為1;如果沒有大於10,就把進製設為0,如些迴圈,把相加的結果以字串的形式結合起來,就得到最後的結果

三 **

#include#includeint main(void)

; //對整形陣列c初始化0

int i,j,m,n,t,k=30;

gets(a); //獲取a字串

gets(b); //獲取b字串

i=strlen(a)-1;

j=strlen(b)-1;

while(k>0)

i--;

j--;

k--;

} while(c[k]==0) //讓k先跑到最高位

k++;

for(;k<31;k++) //輸出時從高位像最低位

printf("%d",c[k]);

printf("\n");

return 0;

}

大整數相加

include include include include 思路如下 將兩個字串分別由低位到高位放置到int陣列中 然後每位對齊相加,大於10,本位取餘,高位進1 char bigintadd const char numstr1,const char numstr2 for i len1 i ...

大整數相加

cpp view plain copy code class cpp include include include include 思路如下 將兩個字串分別由低位到高位放置到int陣列中 然後每位對齊相加,大於10,本位取餘,高位進1 char bigintadd const char numst...

兩整數相加

class solution object defgetsum self,a,b type a int type b int rtype int 1.python中一直左移是不會溢位的,所以要手動模擬32位int型 2.如果小於max int就不用處理了 3.如果溢位就要 以4位bit為例,從000...