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
Sample Output
Mist Note:高精度加算の練習を繰り返すだけで、私にとって、文字列をint型配列に変換するのは間違いやすいところです.
b.d[i]=c[len-i-1]-'0';ここでは「0」を減算する必要があることを覚えておきます.
転載先:https://www.cnblogs.com/mist2019/p/10347787.html
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