2011年3月13日 星期日

UVa 10035 Primary Arithmetic

解題策略

計算兩數相加總共需要多少次進位,用一般大數加法的技巧,數一下進位次數就行了。
//big number a + b
int carry_count = 0;

for(int i=0;i<MAX_LEN;++i) {

    a[i] = a[i] + b[i];

    if( a[i] > 9 ){
        a[i] = a[i] - 10;
        a[i+1]++;
        carry_count++; //數數進位幾次...
    }
}

注意

輸出時要注意名詞的單複數,總共有三個狀況0、1、其他,別忘了判斷喔。
if(carry_count == 0)
    printf("No carry operation.\n");
else if (carry_count == 1)
    printf("1 carry operation.\n");
else
    printf("%d carry operations.\n", carry_count);

碎碎念

輸出句子最後忘了打句號所以吃了兩次WA....