问个超级弱智的问题,怎么判定一个数字是2的冥
时间:2008-05-10 18:53:23
来源:论坛整理 作者: 编辑:chinaitzhe
我只能想出以下的函数,肯定是不对的,请各位高手帮我出出主意,谢谢
bool f(int a)
{
for(i=0;i <99999;i )
{
if(a==1 < <i)
return true;
else
return false;
}
}
网友回复:
- C/C code
Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ #include <iostream> using namespace std; int main(int argc, char* argv[]) { for (unsigned int i = 0; i < 9999; i) if ((i&(i-1)) == 0) cout << i << endl; return 0; }
网友回复:int 溢出了 99999
网友回复:
- C/C code
Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ inline bool Is2Power(unsigned int n){return (n&(n-1)) == 0;}
网友回复:对于楼主的程序,最多循环到31,即i <32就可以了,所以设i <99999是多于的.同时if else 存在逻辑错误.
解释下飞雪的程序:
因为一个数若是2的冥,则其二进制只有一个1,后面全为0(如4为100,8为1000).其减1之后,先前1后面的0全变为1,所以((i&(i-1)) == 0)则i为2的冥.
关键字:超级,弱智,问题,判定,一个,
上一篇:三级大问题
下一篇:下面没有链接了











文章评论
共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面