2011年8月1日 星期一

[ACM 10035] Primary Arithmetic

 
 這些是以前寫過的題目,放在這裡紀錄一下

內容 :

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

輸入說明 :

每一列測試資料有2個正整數,長度均小於10位。最後一列有2個0代表輸入結束。

輸出說明 :

每列測試資料輸出該2數相加時產生多少次進位,請參考Sample Output。注意進位超過1次時operation有加s

範例輸入 :help


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); 
}


沒有留言:

張貼留言