| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付赛孚耐:软件保护加密专家
身份认证令牌USB KEY   
共有 215 人关注过本帖
标题:[分享]分享一个算法:判断一个整数是否全部由奇数组成
收藏  订阅  推荐  打印 
PcrazyC
Rank: 12Rank: 12Rank: 12
等级:版主
威望:28
帖子:5631
积分:57645
注册:2006-10-20
[分享]分享一个算法:判断一个整数是否全部由奇数组成

在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: 12Rank: 12Rank: 12
等级:版主
威望:28
帖子:5631
积分:57645
注册:2006-10-20

唉,发错地方了,哪位版主转到C区去

雁无留踪之意,水无取影之心
2007-11-16 20:16
PcrazyC
Rank: 12Rank: 12Rank: 12
等级:版主
威望:28
帖子:5631
积分:57645
注册:2006-10-20

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

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
积分:320
注册:2007-11-7

楼主。我运行了,只能算两位数的呀,三位数都报错呀,

2007-11-16 23:11
tangguobiao
Rank: 1
等级:新手上路
帖子:22
积分:320
注册:2007-11-7

晕,发错了,汗,楼主好强呀

2007-11-16 23:18
cosdos
Rank: 6Rank: 6
来自:ShangHai
等级:金牌会员
威望:1
帖子:1384
积分:14430
注册:2007-6-19

学习了


—>〉Sun〈<—
2007-11-16 23:35
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.086886 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved