/* ACM 10931 Parity * mythnc * 2011/12/28 08:14:34 * run time: 0.004 */ #include <stdio.h> #include <string.h> #define MAXCHAR 32 int dectobin(int, char *); void reverse(char *); int main(void) { int n, count; char bin[MAXCHAR]; while (scanf("%d", &n) && n != 0) { count = dectobin(n, bin); reverse(bin); printf("The parity of %s is %d (mod 2).\n", bin, count); } return 0; } /* dectobin: make decimal number to * correspond its binary number, * and return the number of 1(bin) */ int dectobin(int n, char *b) { int i, count; i = count = 0; while (n) { if (n % 2) count++; b[i++] = n % 2 + '0'; n /= 2; } b[i] = '\0'; return count; } /* reverse: reverse bin number */ void reverse(char *b) { int i, j; char tmp; for (i = 0, j = strlen(b) - 1; i < j; i++, j--) { tmp = b[i]; b[i] = b[j]; b[j] = tmp; } }
20111228
ACM 10931 Parity
邊轉成bin邊找1的個數即可。
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言