2014年7月3日 星期四

uva 10035 Primary Arithmetic

從個位數開始把每一個數字 parse 出來,然後看相加的結果 (包含加前一個的 carry) 有沒有造

成進位。每一步結束後,把剛剛 parse 的數字從原本的數字中移掉,使下一步可以順利進行

。終止條件要在兩個數字都為 0 的時候才可以結束,因為兩個數字可能不同位數。

cirtical input
956   56
90 90

output
3 carry operations.
1 carry operation.
 

#include <stdio.h>
#include <stdlib.h>

int main(void){
    int num1,num2,tmp;
    int counter,carry;

    while(scanf("%d %d",&num1,&num2)!=EOF){
        if(num1==0&&num2==0) break;

        counter=0; carry=0;
        while(num1!=0||num2!=0){
            if( ( (num1%10) + (num2%10) + carry ) > 9 ){
                ++counter;
                carry=( (num1%10) + (num2%10) + carry ) / 10;
            }else
                carry=0;

            num1/=10; num2/=10;
        }

        if(counter==0)
            printf("No carry operation.\n");
        else if(counter==1)
            printf("1 carry operation.\n");
        else
            printf("%d carry operations.\n",counter);
    }


    return 0;
}

沒有留言:

張貼留言