2011年6月16日 星期四

ACM 424 Integer Inquiry

用大數加法
我覺得我大數加法寫的不太好...


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

int main(void)
{
    int i, len;
    char num[110], sum[200], p, tmp;
   
    for (i = 0; i < 200; i++)
        sum[i] = 0;
    while (gets(num) != NULL && (num[0] != '0' || num[1] != '\0'))
    {
        len = strlen(num);
        for (i = 0; i < len/2; i++)
        {
            tmp = num[i];
            num[i] = num[len-i-1];
            num[len-i-1] = tmp;
        }
        i = 0;
        while (num[i] != '\0')
        {
            p = sum[i] + num[i]-'0';
            sum[i] = p%10;
            sum[i+1] = sum[i+1] + p/10;
            i++;
        }
        while (i < 200 && sum[i] > 9)
        {
            sum[i+1] = sum[i+1] + sum[i]/10;
            sum[i] = sum[i] % 10;
            i++;
        }
    }
    i = 199;
    while (sum[i] == 0)
        i--;
    for (; i >= 0; i--)
       printf("%d", sum[i]);
    putchar('\n');
   
    return 0;
}

沒有留言:

張貼留言