二进制中的1有奇数个还是偶数个

 实现自Matrix67!
//
二进制中的1有奇数个还是偶数个
//实现一
#include <stdio.h>

int main() {
int n;
while (scanf("%d", &n) != EOF) {
int c = 0;
while (n) {
c += n & 1;
n >>= 1;
}
if (c & 1) printf ("奇数个\n");
else printf ("偶数个\n");
}
return 0;
}

//实现二
//分治思想
#include <stdio.h>

int main() {
int n;
while (scanf("%d", &n) != EOF) {
n = n ^ (n >> 1);
n = n ^ (n >> 2);
n = n ^ (n >> 4);
n = n ^ (n >> 8);
n = n ^ (n >> 16);
if (n & 1) printf ("奇数个\n");
else printf ("偶数个\n");
}
return 0;
}

 

posted on 2012-04-05 12:12  Try86  阅读(564)  评论(0)    收藏  举报