C語言:大數求和

 


點擊獲取題目


 

1410: [藍橋杯]高精度加法

時間限制: 1 Sec  內存限制: 256 MB
提交: 28  解決: 20
[狀態] [提交] [命題人:外部導入]

題目描述

輸入兩個整數 ab,輸出這兩個整數的和。 ab都不超過100位。

輸入

輸入包括兩行,第一行爲一個非負整數 a,第二行爲一個非負整數 b
兩個整數都不超過100位,兩數的最高位都不是0。

輸出

輸出一行,表示 b的值。

樣例輸入 Copy

20100122201001221234567890
2010012220100122

樣例輸出 Copy

20100122203011233454668012


原理:先分別用字符串數組a,b把數存起來,而後轉換成整數類型的數組,【注意數組長度必定要大於max(strlen(a),strlen(b))+1】最好把字符串的尾巴做爲數字數字的第一項,倒着存起來,而後再相加。
最後再判斷一下,首位是否爲0:若是爲0則不輸出,i從1開始一個一個輸出;不然,i從0開始輸出。
C++代碼
 1 #include <stdio.h>
 2 #include <math.h>
 3 #include<string.h>
 4 #include<bits/stdc++.h>
 5 using namespace std;
 6 int main()
 7 {
 8     char a[200],b[200];
 9     scanf("%s%s",a,b);
10     int la,lb;
11     la=strlen(a),lb=strlen(b);
12     int i;
13     int l=la;
14     if(lb>la)
15     {
16         l=lb;
17     }
18     l;
19     int n[l+1],m[l+1];
20     memset(n,0,sizeof(n));
21     memset(m,0,sizeof(m));
22     int c[l]={0};
23     for(i=0;i<la;i++)
24     {
25         n[i]=a[la-1-i]-'0';
26     }
27     for(i=0;i<lb;i++)
28     {
29         m[i]=b[lb-1-i]-'0';
30     }
31     for(i=0;i<l;i++)
32     {
33         c[i]=c[i]+n[i]+m[i];
34         c[i+1]=c[i]/10;
35         c[i]%=10;
36     }
37     if(c[l]!=0)
38     {
39         printf("1");
40     }
41     for(i=l-1;i>=0;i--)
42     {
43         printf("%d",c[i]);
44     }
45 }
相關文章
相關標籤/搜索