【算法竞赛】:进位数统计

题目

给出两个数a,b,例如a=123,b = 456这两个数,算出这两个数相加过程中产生了多少次进位?

思路

思路就是最简单的,从个位开始加,然后算出每次算完的进位用c来存储,c只能为0或者1,然后算完之后C更新,如果C==1,表示有进位,然后全局变量ans(存储最终进位结果的)++;

技巧性的东西在于如何用一个简单的循环做到从个位数相加?
请详细看代码
可能上段说的不是很明白,但是看了代码就懂了 = =

代码

#include <iostream>
using namespace std;
int main(){
    int a,b;
    while(cin>>a>>b&&(a!=0 &&b!=0)){
        int c=0,ans=0;   
        while(a!=0 || b!=0){
            c=(a%10)+(b%10)+c>9?1:0;  //注意这里后面一定要加上上一次运算产生的进位,这个技巧也用的很好 = =
            ans+=c;
            a/=10;
            b/=10;
        }
        cout<<ans<<endl;
    }
}

运行截图:

【算法竞赛】:进位数统计_第1张图片

说明如上是正确的 = =

你可能感兴趣的:(算法,C语言,X)