2011年6月21日 星期二

ACM 10922 2 the 9s

一開始看到這題看不懂他的9-degree到底是什麼,查了資料以後終於懂了= =

1. 將各個位數相加得到一個總合sum
2. 將sum除以9,此時會有兩種可能:
(a) 若小於10,那麼就結束了
(b) 若沒有小於10,那麼就回到第一個步驟

每跑完1, 2步驟,深度就加一


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

int main(void)
{
    int i, ok, sum, deg, len, tmp;
    char s[1001];
   
    while (gets(s) != NULL && (s[0] != '0' || s[1] != '\0'))
    {
        ok = sum = 0;
        len = strlen(s);
        for (i = 0; i < len; i++)
            sum = sum + (s[i]-'0');
        if (sum%9 == 0)
            ok = 1;
        deg = 1;
        while (sum >= 10)
        {
            tmp = sum;
            sum = 0;
            do {
                sum = sum + tmp%10;
                tmp /= 10;
            } while (tmp != 0);
            deg++;
        }
        if (ok)
            printf("%s is a multiple of 9 and has 9-degree %d.\n", s, deg);
        else
            printf("%s is not a multiple of 9.\n", s);
    }

    return 0;
}

沒有留言:

張貼留言