一个正整数改写成2进制后,如果数字1的个数是偶数个,那么就称这个正整数是‘好数’.例如,正整数 6=(110上面没打完这里继续:就是一个‘好数’.将所有的‘好数’按小到大排列,第2010个是什
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/21 02:10:05
![一个正整数改写成2进制后,如果数字1的个数是偶数个,那么就称这个正整数是‘好数’.例如,正整数 6=(110上面没打完这里继续:就是一个‘好数’.将所有的‘好数’按小到大排列,第2010个是什](/uploads/image/z/1061737-25-7.jpg?t=%E4%B8%80%E4%B8%AA%E6%AD%A3%E6%95%B4%E6%95%B0%E6%94%B9%E5%86%99%E6%88%902%E8%BF%9B%E5%88%B6%E5%90%8E%2C%E5%A6%82%E6%9E%9C%E6%95%B0%E5%AD%971%E7%9A%84%E4%B8%AA%E6%95%B0%E6%98%AF%E5%81%B6%E6%95%B0%E4%B8%AA%2C%E9%82%A3%E4%B9%88%E5%B0%B1%E7%A7%B0%E8%BF%99%E4%B8%AA%E6%AD%A3%E6%95%B4%E6%95%B0%E6%98%AF%E2%80%98%E5%A5%BD%E6%95%B0%E2%80%99.%E4%BE%8B%E5%A6%82%2C%E6%AD%A3%E6%95%B4%E6%95%B0+6%3D%28110%E4%B8%8A%E9%9D%A2%E6%B2%A1%E6%89%93%E5%AE%8C%E8%BF%99%E9%87%8C%E7%BB%A7%E7%BB%AD%EF%BC%9A%E5%B0%B1%E6%98%AF%E4%B8%80%E4%B8%AA%E2%80%98%E5%A5%BD%E6%95%B0%E2%80%99.%E5%B0%86%E6%89%80%E6%9C%89%E7%9A%84%E2%80%98%E5%A5%BD%E6%95%B0%E2%80%99%E6%8C%89%E5%B0%8F%E5%88%B0%E5%A4%A7%E6%8E%92%E5%88%97%2C%E7%AC%AC2010%E4%B8%AA%E6%98%AF%E4%BB%80)
一个正整数改写成2进制后,如果数字1的个数是偶数个,那么就称这个正整数是‘好数’.例如,正整数 6=(110上面没打完这里继续:就是一个‘好数’.将所有的‘好数’按小到大排列,第2010个是什
一个正整数改写成2进制后,如果数字1的个数是偶数个,那么就称这个正整数是‘好数’.例如,正整数 6=(110
上面没打完这里继续:就是一个‘好数’.将所有的‘好数’按小到大排列,第2010个是什么?
一个正整数改写成2进制后,如果数字1的个数是偶数个,那么就称这个正整数是‘好数’.例如,正整数 6=(110上面没打完这里继续:就是一个‘好数’.将所有的‘好数’按小到大排列,第2010个是什
#include
#define ORDER 2010
/**
* 判断指定的正整数是否为好数(二进制表示时有偶数位 1)
* @param dwSample 指定的正整数
* @return 指定的正整数是好数则返回非零,否则返回零
*/
int isGood(unsigned long dwSample) {
int iCount;
if (dwSample == 0) {
return 0;
}
/* 依次将每一位移动到最低位 */
for (iCount = 0; dwSample != 0; dwSample >>= 1) {
/* 最低位为 1 则计数 */
if (dwSample & 1) {
++iCount;
}
}
return (iCount % 2) == 0;
}
void main() {
unsigned long dw;
int iCount;
/* 在双字节正整数范围内寻找 */
for (iCount = 0,dw = 1; dw != 0; ++dw) {
if (isGood(dw)) {
++iCount;
if (iCount == ORDER) {
printf("Found:%d !\n",dw);
return;
}
}
}
printf("Failed!\n");
}