nyoj 74-小学生算术(进位问题)

74-小学生算术


内存限制:64MB 时间限制:3000ms 特判: No
通过数:23 提交数:53 难度:1

题目描述:

很多小学生在学习加法时,发现“进位”特别容易出错。你的任务是计算两个三位数在相加时需要多少次进位。你编制的程序应当可以连续处理多组数据,直到读到两个0(这是输入结束标记)。

输入描述:

输入两个正整数m,n.(m,n,都是三位数)

输出描述:

输出m,n,相加时需要进位多少次。

样例输入:

123 456
555 555
123 594
0 0

样例输出:

0
3 
1

分析:
  1、以一个数来存放进位的信息,要注意每次都应该对该数进行修改

核心代码:
1 while(n)
2 {
3     int t = (n%10) + (m%10) + b;
4     b = t / 10;
5     if (t >= 10) ++ cnt;
6     n /= 10, m /= 10;
7 }

C/C++代码实现(AC):

 1 #include <iostream>
 2 #include <algorithm>
 3 #include <cstring>
 4 #include <cstdio>
 5 #include <cmath>
 6 #include <stack>
 7 #include <map>
 8 #include <queue>
 9 #include <set>
10 
11 using namespace std;
12 const int MAXN = 310;
13 int A[MAXN];
14 
15 int main()
16 {
17     int n, m;
18     while(scanf("%d%d", &n, &m), n || m)
19     {
20         int b = 0, cnt = 0;
21         while(n)
22         {
23             int t = (n%10) + (m%10) + b;
24             if (t >= 10) ++ cnt;
25             b = t / 10;
26             n /= 10, m /= 10;
27         }
28         printf("%d\n", cnt);
29     }
30     return 0;
31 }
 
  

猜你喜欢

转载自www.cnblogs.com/GetcharZp/p/9112198.html