bunoj 1006

WA了好多次,原来当个数大于1的时候是operations,忘记加s,坑啊




Primary Arithmetic

1000ms
65536KB
64-bit integer IO format:  %lld      Java class name:  Main
Font Size:   
Type: 
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •                    
  • 当你在小学学习算数的时候,老师会教你把两个数由右至左按位加起来。很多时候,加法过程中会出现进位。对于一部分孩子,理解这个“进位”在当时是很困难的事情。现在你的工作就是编写一个程序来判断两个数相加的过程中会产生多少次进位,用以确定这两个数相加的“难度”。

    Input

    每一行有两个无符号整数(最大不超过1000000000),当输入0 0的时候,程序结束。

    Output

    对于每一行的输入两个整数,你需要判断会产生有多少个进位,每一个输出占一行。

    Sample Input

    123 456
    555 555
    123 594
    0 0
    

    Sample Output

    No carry operation.
    3 carry operations.
    1 carry operation.
    

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <vector>
    #include<cmath>
    using namespace std;
    int main()
    {
        int a,b,cnt;
        while(cin>>a>>b&&(a||b))
        {
           int s=0;
           cnt=0;
            while(a&&b)
            {
                int t1=a%10;
                a/=10;
                int t2=b%10;
                b/=10;
                if(s+t1+t2>=10)
                    s=1,cnt++;
                else
                    s=0;
            }
            while(a)
            {
                if(a%10+s>=10)
                    cnt++,s=1;
                    else
                        s=0;
                    a/=10;
            }
            while(b)
            {
                if(b%10+s>=10)
                    cnt++,s=1;
                    else
                        s=0;
                    b/=10;
            }
            if(cnt==1)
                cout<<cnt<<" carry operation."<<"\n";
                else if(cnt>1)
                    cout<<cnt<<" carry operations."<<"\n";
            else
                cout<<"No carry operation."<<"\n";
        }
        return 0;
    }

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值