1. 程式人生 > >2829: 高精A+B [1*+]

2829: 高精A+B [1*+]

%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 int
temp=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*+]