在CSDN上回帖发现了一个问题,想了一下,有一个比较好的算法,给大家分享一下
判断一个整数是否全部由奇数组成
这个题目和判断一个数二进制数中1的个数方法差不多.
只要从最后一位数开始考虑,如果最后一位数是奇数,二进制数最后一位肯定为1,因为其它位都是2的倍数,所以就相当于考虑最后一位数是否为1,只要将这个数与1这个数进行与操作,如果结果是1则说明是奇数,如果是0就是偶数.然后将这个数除以10,就会去掉最后一位了,倒数第二位就是最后一位了,后面的方法同上,直到这个数为0.
#include<iostream>
using namespace std;
bool check(long a)
{
while(a)
{
if(!(a&1)) //判断最后一位是不是1
return 0;
a/=10;
}
return 1;
}
int main()
{
long a;
while(cin>>a,a!=0)
cout<<a<<" is "<<(check(a)?"OK":"ERROR")<<endl;
return 0;
}
参考地址:http://topic.csdn.net/u/20071116/17/76bac1a4-63a7-4b2b-938a-22a757756d34.html?seed=1436541807
[此贴子已经被作者于2007-11-18 11:37:57编辑过]