大数相加(字符串解法)
发布时间:2020-12-14 02:54:30 所属栏目:大数据 来源:网络整理
导读:#includeiostream#includealgorithm#includestring#includemap#includeset#includevectorusing namespace std;//大数相加vectorint Add(vectorint left,vectorintright){int mlen,len,i,c = 0; mlen = left.size() right.size() ? left.size() : right.size(
#include<iostream> #include<algorithm> #include<string> #include<map> #include<set> #include<vector> using namespace std; //大数相加 vector<int> Add(vector<int> &left,vector<int>&right) { int mlen,len,i,c = 0; mlen = left.size() > right.size() ? left.size() : right.size(); vector<int> result(mlen); if (left.size() > right.size()) { len = left.size() - right.size(); for (i = 0; i < len; i++) { right.insert(right.begin(),0); } } else if (left.size() < right.size()) { len = -left.size() + right.size(); for (i = 0; i < len; i++) { left.insert(left.begin(),0); } } int sum; for (i = mlen - 1; i >= 0;i--) { sum = left[i] + right[i] + c; result[i] = sum % 10; c = sum / 10; } if (c > 0) { result.insert(result.begin(),c); } return result; } void exchange(string Snum,vector<int> &Vnum) { int remainder; vector<char> ch(Snum.size()); for (int i = 0; i < Snum.size(); i++) { ch[i] = Snum[i]; Vnum.push_back(ch[i]-'0'); } } int main() { long int num; string left,right; cin >> left>>right; vector<int> Ileft,Iright,result; exchange(left,Ileft); exchange(right,Iright); result=Add(Ileft,Iright); for (int i =0; i < result.size(); i++) { cout << result[i]; } cout << endl; system("pause"); return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |