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

5778 ワード

タイトルの説明
AとBを入力し、A+Bの値を計算します
Input
2行のデータは、それぞれAとB 0<=A<=1 E 200<=B<=10^200
Output
A+Bの結果
Sample Input
1
1

Sample Output
2

 1 #include
 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){
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){
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」を減算する必要があることを覚えておきます.
転載先:https://www.cnblogs.com/mist2019/p/10347787.html