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

题目描述

输入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’。

猜你喜欢

转载自www.cnblogs.com/mist2019/p/10347787.html