华为机试题:大数求和
发布时间:2020-12-14 02:04:38 所属栏目:大数据 来源:网络整理
导读:描述:? 给定两个非常大的正整数A和B,位数在50至100之间。求C=A+B; ? 题目类别: ?字符串? 难度: ?中级? 运行时间限制: 10Sec 内存限制: 128MByte 阶段: ?入职前练习? 输入: ? 因为A和B很大,从高位到低位,以字符串的形式输入两行数字A和B。A和B的位数在50
#include <iostream> #include <stdio.h> #include <string> #include <algorithm> using namespace std; int main() { string A,B,sum; int lensA = 0,lensB = 0; string add = "0123456789"; int i = 0,j = 0; int flow = 0; //溢出标识 int bit = 0; cin >> A >> B; /*将两个字符串翻转*/ reverse(A.begin(),A.end()); reverse(B.begin(),B.end()); lensA = A.size(); lensB = B.size(); for(; i < lensA || j < lensB;) { bit = 0; if (i < lensA) { bit += A[i++] - 0x30; } if(j < lensB) { bit += B[j++] - 0x30; } /*把上一个计算的进位加上*/ bit += flow; /*计算这次的进位*/ flow = bit / 10; bit = bit % 10; sum = sum + add[bit]; } if(flow == 1) { sum = sum + '1'; } reverse(sum.begin(),sum.end()); cout << sum << endl; return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |