2011年8月3日 星期三

[ACM 10035] Primary Arithmetic

 內容 :
在小學時我們都做過加法的運算,就是把2個整數靠右對齊然後,由右至左一位一位相加。如果相加的結果大於等於10就有進位(carry)的情況出現。你的任務就是要判斷2個整數相加時產生了幾次進位的情況。這將幫助小學老師分析加法題目的難度。


輸入說明 :
每一列測試資料有2個正整數,長度均小於10位。最後一列有2個0代表輸入結束。
輸出說明 :
每列測試資料輸出該2數相加時產生多少次進位,請參考Sample Output。注意進位超過1次時operation有加s
範例輸入 :
123 456
555 555
123 594
0 0

範例輸出 :
No carry operation.
3 carry operations.
1 carry operation.

/**********************************************************************************/
/*  Problem: c014 "Primary Arithmetic" from ACM 10035                             */
/*  Language: C                                                                   */
/*  Result: AC (56ms, 356KB) on ZeroJudge                                         */
/*  Author: diiuuli520 at 2008-08-17 02:39:02                                     */
/**********************************************************************************/
#include<stdio.h>
#include<stdlib.h>
int main(void)
    int a,b,y=0,z,i=0,c,j,x; 
    while(scanf("%d%d",&a,&b)!=EOF){
        if(a==0&&b==0) break; 
        x=0;
        z=0; 
        do{ 
            c=(a%10)+(b%10)+x;
            x=c/10; 
            a/=10;
            b/=10; 
            if(x==1)
              z++; 
            }while(a||b);
        if(z==0)
        printf("No carry operation.\n");
        else if(z==1)
        printf("1 carry operation.\n");
        else 
        printf("%d carry operations.\n",z);     
    } 
    return(0); 
}

沒有留言:

張貼留言