一 特大整數描述
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...