| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 996 人关注过本帖
标题:[分享]分享一个算法:判断一个整数是否全部由奇数组成
只看楼主 加入收藏
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
结帖率:100%
收藏
 问题点数:0 回复次数:5 
[分享]分享一个算法:判断一个整数是否全部由奇数组成

在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编辑过]

搜索更多相关主题的帖子: 整数 奇数 算法 二进制数 位数 
2007-11-16 20:15
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
唉,发错地方了,哪位版主转到C区去

雁无留踪之意,水无取影之心
2007-11-16 20:16
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 

改个能处理大点的,上面的处理的数太小了

VC++6.0运行通过

[CODE]#include<stdio.h>
int check(__int64 a)
{
while(a)
{
if(!(a&1))
return 0;
a/=10;
}
return 1;
}
int main()
{
__int64 a;
while(scanf("%I64d",&a),a!=0)
printf("%I64d is %s\n",a,check(a)?"OK":"ERROR");
return 0;
}[/CODE]


雁无留踪之意,水无取影之心
2007-11-16 21:45
tangguobiao
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2007-11-7
收藏
得分:0 
楼主。我运行了,只能算两位数的呀,三位数都报错呀,

2007-11-16 23:11
tangguobiao
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2007-11-7
收藏
得分:0 
晕,发错了,汗,楼主好强呀

2007-11-16 23:18
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 

学习了


—>〉Sun〈<—
2007-11-16 23:35
快速回复:[分享]分享一个算法:判断一个整数是否全部由奇数组成
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022629 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved