2011年6月25日 星期六

ACM 10035 Primary Arithmetic

用整數型態去做還比較簡單...


#include <stdio.h>
#include <string.h>

int main(void)
{
    char a[11], b[11];
    int i, j, n1[10], n2[10], tmp, carry, count;
   
    while (scanf("%s%s", a, b) == 2 &&
           (a[0] != '0' || a[1] != '\0' || b[0] != '0' || b[1] != '\0'))
    {
        for (i = 0, j = strlen(a)-1; j >= 0; i++, j--)
            n1[i] = a[j] - '0';
        for (; i < 10; i++)
            n1[i] = 0;
        for (i = 0, j = strlen(b)-1; j >= 0; i++, j--)
            n2[i] = b[j] - '0';
        for (; i < 10; i++)
            n2[i] = 0;
       
        carry = count = 0;
        for (i = 0; i < 10; i++)
        {
            tmp = n1[i] + n2[i] + carry;
            carry = tmp/10;
            if (tmp >= 10)
                count++;
        }
       
        if (count == 0)
            printf("No carry operation.\n");
        else if (count == 1)
            printf("1 carry operation.\n");
        else
            printf("%d carry operations.\n", count);
    }
   
    return 0;
}

沒有留言:

張貼留言