当前位置: 代码迷 >> 综合 >> 1451 加法的进位(二)
  详细解决方案

1451 加法的进位(二)

热度:23   发布时间:2023-12-05 17:52:38.0

1451 加法的进位(二)

时间限制 : 2000/1000 MS(Java/Others) | 内存限制 :65536/32768 KB(Java/Others)

提交数 : 5355 | 通过数 : 737

题目描述

 
 

 小学生在学多位数的加法时,是将两个加数右对齐,然后从右往左一位一位地加。多位数的加法经常会有进位

,如果对齐的两位相加结果大于或等于10就向左边一位进一。任务是:给定两个加数,统计进位的次数。

输入要求

输入的每一行是两个无符号整数,不超过20位。最后一行为两个0,表示输入结束。

输出要求

对每一行(最后一行除外)的两个加数,计算它们进行加法运算时进位的次数并输出。

输入样例

123 456
555 555
123 594
0 0

输出样例

0 carry operation(s)
3 carry operation(s)
1 carry operation(s)
#include<bits/stdc++.h>
using namespace std;
int add(vector<int> &A,vector<int> &B)
{int t=0,sum=0;for(int i=0;i<A.size()||i<B.size();i++){if(i<A.size()) t+=A[i];if(i<B.size()) t+=B[i];if(t>=10){sum++;}t/=10;}return sum;
}
int main()
{string a,b;while(cin>>a>>b){if(a=="0"&&b=="0")break;vector<int> A,B;for(int i=a.size()-1;i>=0;i--)A.push_back(a[i]-'0');for(int i=b.size()-1;i>=0;i--)B.push_back(b[i]-'0');int c=add(A,B);printf("%d carry operation(s)\n",c);}return 0;
}