大数求和
发布时间:2020-12-14 02:39:37 所属栏目:大数据 来源:网络整理
导读:描述:? 给定两个非常大的正整数A和B,位数在50至100之间。求C=A+B; ? 题目类别: ?字符串? 难度: ?中级? 运行时间限制: 10Sec 内存限制: 128MByte 阶段: ?入职前练习? 输入: ? 因为A和B很大,从高位到低位,以字符串的形式输入两行数字A和B。A和B的位数在50
代码如下:
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <iostream> using namespace std; int main() { char a[100],b[100],sum[101]; cin>>a>>b; int len_a=strlen(a); int len_b=strlen(b); char temp_a[100],temp_b[100];//临时存储a,b内容 for (int i=0;i<len_a;i++) temp_a[len_a-1-i]=a[i]-'0'; for (int j=0;j<len_b;j++) temp_b[len_b-1-j]=b[j]-'0'; int c=0;//进位 int len_sum=0; for (int i=0;i<len_a && i<len_b;i++)//都有数据的位数相加 { sum[i]=(temp_a[i]+temp_b[i]+c)%10+'0';//各个位数分别相加再加上进位数之和对10取余 c=(temp_a[i]+temp_b[i]+c)/10;//之后的进位数 len_sum++;//和的长度加1 } if (len_a>len_b)//如果a比b长 { for (int i=len_b;i<len_a;i++) { sum[i]=(temp_a[i]+c)%10+'0'; c=(temp_a[i]+c)/10; len_sum++; } } else { for (int i=len_a;i<len_b;i++)//如果b比a长 { sum[i]=(temp_b[i]+c)%10+'0'; c=(temp_b[i]+c)/10; len_sum++; } } if(c)//进位不为0,和长度加1 len_sum++; for(int j=len_sum-1;j>=0;j--)//逆序输出 cout<<sum[j]; system("pause"); return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |