您的位置:首页 > 其它

给你一个int型数,如 n, 判断它是不是2的多少次方,若是的,打印出来是多少次方?

2011-06-18 21:14 441 查看
给你一个int型数,如 n, 判断它是不是2的多少次方,若是的,打印出来是多少次方
比如 n=8 2的3次方=8 所以打印3
n=5 直接cout<<"no"就可以了
要求,不准用循环,不准用库函数

想不通,睡不着啊,
我只知道 n&(n-1)可以判断是不是满足条件,但是要确定是多少次方,而且不能用循环。

#include <cstdlib>
#include <iostream>
using namespace std;
int log2(int n)
{
if(1 == n)
return 0;
else
return 1 + log2(n>>1);
}
int main(int argc, char *argv[])
{
int n;
printf("please input an interger: ");
cin>>n;

if(n & (n-1))
printf("n is not 2 的N次方./n");
else
printf("n is 2 的%d次方./n", log2(n));
system("PAUSE");
return EXIT_SUCCESS;
}

http://topic.csdn.net/u/20110614/01/16affc97-0f0c-43e7-b874-28b019a0d759.html?seed=546114972&r=73921429#r_73921429 http://topic.csdn.net/u/20110618/14/d779583c-96a8-452d-a384-b73cac1c9bc8.html?42937
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: