NYOJ74题

来源:互联网 发布:优思得云计算科技 编辑:程序博客网 时间:2024/06/03 13:09

小学生算术

时间限制:3000 ms  |  内存限制:65535 KB
难度:1
描述
很多小学生在学习加法时,发现“进位”特别容易出错。你的任务是计算两个三位数在相加时需要多少次进位。你编制的程序应当可以连续处理多组数据,直到读到两个0(这是输入结束标记)。
输入
输入两个正整数m,n.(m,n,都是三位数)
输出
输出m,n,相加时需要进位多少次。
样例输入
123 456555 555123 5940 0
样例输出
03 1
自己写的,有问题,当999+999时,进位应该是3次,但编程算的是1次,但是居然通过了,不可思议
#include<stdio.h>int main() {int m, n, d, a, b;while (scanf("%d%d", &m, &n) && n, m) {d = 0;for (int i = 0; i < 3 ; i++){a = m % 10;m = m / 10;b = n % 10;n = n / 10;if (a + b >= 10) {d++;m = m + 1;}}printf("%d\n", d);}}
这是最优解,这个计算的没有任何问题:
<pre class="cpp" name="code">#include<stdio.h>int main(){int a,b,c,d,e,f,n,m,i;for(;;){scanf("%d%d",&n,&m);if(n==0&&m==0)return 0;else{i=0;a=n/100;b=n%100/10;c=n%10;d=m/100;e=m%100/10;f=m%10;if(c+f>=10){i+=1;b+=1;}if(b+e>=10){i+=1;a+=1;}if(a+d>=10){i+=1;}printf("%d\n",i);}}return 0;}


0 0