2829: 高精A+B [1*+]
Posted mist2019
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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’。
以上是关于2829: 高精A+B [1*+]的主要内容,如果未能解决你的问题,请参考以下文章