20111119

ACM 10929 You can say 11

判斷是否為11的倍數。

做(奇數位數和 - 偶數位數和) % 11即可。

神秘的數字11。

/* ACM 10929 You can say 11
 * mythnc
 * 2011/11/19 22:51:54   
 * run time: 0.016
 */
#include <stdio.h>

#define MAXCHAR 1001

int mul11(char *);

int main(void)
{
    char s[MAXCHAR];

    while (scanf("%s", s) == 1 && (s[0] != '0' || s[1] != '\0'))
        if (mul11(s))
            printf("%s is a multiple of 11.\n", s);
        else
            printf("%s is not a multiple of 11.\n", s);

    return 0;
}

/* mul11: return 1 if s can be expressed 11n
 * else return 0 */
int mul11(char *s)
{
    int i, odd, even;

    for (i = odd = even = 0; s[i] != '\0'; i++)
        if (i % 2 == 0)
            odd += s[i] - '0';
        else
            even += s[i] - '0';

    return (odd - even)% 11 == 0;
}

沒有留言: