Primary Arithmetic
来源:BNUOJ 1006
http://www.bnuoj.com/v3/problem_show.php?pid=1006
当你在小学学习算数的时候,老师会教你把两个数由右至左按位加起来。
很多时候,加法过程中会出现进位。对于一部分孩子,理解这个“进位”
在当时是很困难的事情。现在你的工作就是编写一个程序来判断两个数
相加的过程中会产生多少次进位,用以确定这两个数相加的“难度”。
Input
每一行有两个无符号整数(最大不超过1000000000),当输入0 0的时候,程序结束。
Output
对于每一行的输入两个整数,你需要判断会产生有多少个进位,每一个输出占一行。
Sample Input Sample Output
No carry operation.
carry operations.
carry operation. Source
第七届北京师范大学程序设计竞赛热身赛第一场 ()注意输出结果里面的细微区别:
operations和operation
()这个题目大多数人可能会想:直接把两个数当字符串输入再从后往前扫描处理。
其实这个题可以重复下面的过程:取余数直接得到最低位,然后消掉最低位。
题目描述
#include<stdio.h>
int main()
{
int a,b,x,y,c;
int result;
freopen("input.txt","r",stdin);
while(scanf("%d%d",&a,&b)!=EOF)
{
if(a==&&b==) break;
result=;
c=;
while(a>||b>)
{
x=a%;
y=b%;
a=a/;
b=b/;
c=x+y+c;
if(c>=)
{
result++;
c=c/;
}
else
{
c=;
}
}
if(result==) printf("No carry operation.\n");
else
{
if(result>) printf("%d carry operations.\n",result);
else printf("%d carry operation.\n",result);
}
}
return ;
}