大整数求和

来源:互联网 发布:java员工薪资管理 编辑:程序博客网 时间:2024/05/23 00:41
vector<int> BigNumAdd(vector<int> vec1, vector<int> vec2){vector<int> num;int flag=0, temp,i;//flag为进位标识vector<int>::iterator iter1=vec1.begin();vector<int>::iterator iter2 = vec2.begin();for ( i = 0; i < vec1.size() && i < vec2.size(); i++)//逐位进行相加计算{temp = (*iter1 + *iter2) % 10+flag;flag = (*iter1 + *iter2) / 10;num.push_back(temp);iter1++;iter2++;}if (vec1.size()>vec2.size())    //计算大整数vec1的剩余部分{for (; iter1 != vec1.end(); iter1++){temp = (*iter1 + flag) % 10;flag = (*iter1 + flag) / 10;num.push_back(temp);}}if (vec2.size()>vec1.size())     // 计算大整数vec2的剩余部分{for (; iter2 != vec1.end(); iter2++){temp = (*iter2 + flag) % 10;flag = (*iter2 + flag) / 10;num.push_back(temp);}}if (flag == 1)    //若最后有进位,则最终结果会多出一位num.push_back(1);return num;}

测试范例:

  1 2 3 4 5 6 7 8 9

+1 3 5 7 9 9 9 9

   2 5 8 1 5 6 7 8 0 1

低位   ---->   高位

int main(){vector<int> vec1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };vector<int> vec2 = { 1, 3, 5, 7, 9, 9, 9, 9 };vector<int>res = BigNumAdd(vec1, vec2);for (vector<int>::iterator iter = res.begin(); iter != res.end(); ++iter)cout << *iter << " ";return 0;



0 0
原创粉丝点击