2011年6月11日 星期六

ACM 10550 Combination Lock

以順時針旋轉為例子:
(1) 假設 原本的位置a < 後來的位置b
那麼所轉過的格數 = 40 - (b-a)
(2) 假設 原本的位置a > 後來的位置b
那麼所轉過的格數 = a-b

至於逆時針的做法則那是倒過來,也就是說如果為(1)的情況, 那麼所轉過的格數 = a-b

#include <stdio.h>

int main(void)
{
    int a, b, c, p, d;
   
    while (scanf("%d%d%d%d", &p, &a, &b, &c) == 4 && (p||a||b||c))
    {
        d = 0;
        if (p < a)
            d = d + 40 - (a-p);
        else
            d = d + (p-a);
       
        if (a < b)
            d = d + (b-a);
        else
            d = d + 40 - (a-b);
       
        if (b < c)
            d = d + 40 - (c-b);
        else
            d = d + (b-c);
       
        printf("%d\n", 1080 + 9*d);
    }
   
    return 0;
}

沒有留言:

張貼留言