NOIP演算法 大數的加法

2021-09-10 19:50:52 字數 1285 閱讀 7230

求兩個不超過200位的非負整數的和

輸入:有兩行,每行是乙個不超過200位的非負整數,可能有多餘的前導0

輸出:一行,即相加後的結果。結果裡不能有多餘的前導0,即如果結果是342,那麼就不能輸出為0342

【樣例輸入】

【樣例輸出】

55555555555555555555555

一、我們為什麼不能對大數直接進行加、減、乘、除運算 ?

答案:因為資料太大,沒有資料型別可以儲存

如何使用程式輸出int、unsigned int 型的最大值、最小值?

#include using namespace std;	

int main(){

//int 整型 -2147483648 ~ 2147483647

//unsigned int 無符號整型 0 ~ 4294967295

cout<二、做大數的加法運算需要考慮的問題:

1)怎麼儲存? 用字元陣列

2)進製怎麼處理? int c = 0; c = (a+b)/10  如果c ==1  該進製了,c==0,  不用進製

3)進製後本位怎麼處理?  int d = 0;   d = (a+b)%10

#include#includeusing namespace std;

int main()

{ //求兩個不超過200位的大數的和,

char a[200],b[200];

int a1[200],b1[200],c1[300];

int lena,lenb,lenc,i,x;

memset(a1,0,sizeof(a1)); //將儲存加數的大數陣列值全部置0

memset(b1,0,sizeof(b1)); //將儲存被加數的大數陣列值全部置0

cout<

{ cout備註說明:

gets()函式常常產生告警,因為它只只有乙個引數,那就是字元緩衝區的指標,並沒有指定該緩衝區的長度也就是大小。當你輸入乙個很長很長的字串的時候,gets ()函式會把每乙個字元都存入到棧(statck)中,因此當字串很大的時候就會導致程式異常終止。推薦使用getline()函式,用法是:cin.getline(緩衝區指標,最大接受長度)。只要輸入的字串不超過最大的長度即可。

演算法 大數加法

將兩個無法使用基本資料型別儲存的大數進行加法運算。基本思路 使用字串型別進行輸入輸出,處理時將其每一位轉換成int型別,進行加減和進製。c語言實現 這個是自己編完,根據網上的其他 進行了一些修改刪減得出的 個人認為相比網上的一些 更具有可讀性和實用性,還是比較值得記錄的。include includ...

演算法 大數加法和大數乘法

大數加法 以字串的形式讀入兩個數字,編寫乙個函式計算它們的和,以字串形式返回。字串長度不大於100000,保證字串僅由 0 9 這10種字元組成 public string solve add string s,string t else if j 0 else int sum x y m m su...

大數加法運算演算法

1.大數儲存的實現 作為實現大數儲存最常見的一類方法是利用陣列。將乙個有 n 位的大數存入陣列 每個陣列的乙個元素表示一位十進位制數。2.大數加法運算 看下面乙個例子 122345678902345 34567890012 122380246792357 在上面的加法運算中 並沒有考慮參與運算的數的...