2829: 高精A+B [1*+]
阿新 • • 發佈:2019-02-02
%d big sam 精度 emp 字符串轉換 amp -s arr
題目描述
輸入A和B,計算A+B的值
Input
兩行數據,分別是A和B
0<=A<=1E200
0<=B<=10^200
Output
A+B的結果
Sample Input
1 1
Sample Output
2
1 #include<stdio.h> 2 #include<string.h> 3 struct bign{ 4 int d[110]; 5 int len; 6 bign(){ 7 memset(d,0,sizeof(d)); 8 len=0; 9 } 10 };11 bign change(char c[]){ 12 int len=strlen(c); 13 bign b; 14 b.len=len; 15 for(int i=0;i<len;i++){ 16 b.d[i]=c[len-i-1]-‘0‘; 17 } 18 return b; 19 } 20 bign add(bign a,bign b){ 21 bign c; 22 int carry=0; 23 for(int i=0;i<a.len||i<b.len;i++){ 24 inttemp=a.d[i]+b.d[i]+carry; 25 c.d[c.len++]=temp%10; 26 carry=temp/10; 27 } 28 if(carry!=0){ 29 c.d[c.len++]=carry; 30 } 31 return c; 32 } 33 int main(){ 34 char a[110],b[110]; 35 scanf("%s%s",a,b); 36 bign c=add(change(a),change(b)); 37 for(int i=c.len-1;i>=0;i--){ 38 printf("%d",c.d[i]); 39 } 40 return 0; 41 }
Mist Note:只是重復的練習高精度加法,對於我而言,一個地方容易出錯,就是字符串轉換為int型數組,
b.d[i]=c[len-i-1]-‘0‘;這個地方記住需要減去字符‘0’。
2829: 高精A+B [1*+]