Chinaunix首页 | 论坛 | 博客
  • 博客访问: 333772
  • 博文数量: 56
  • 博客积分: 2058
  • 博客等级: 中尉
  • 技术积分: 688
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-11 09:19
个人简介

code rush

文章分类

全部博文(56)

文章存档

2012年(2)

2011年(54)

分类: C/C++

2011-06-15 19:32:25

一个数n若是2的某幂次方,则n&(n-1)==0  比如 8=(1000) 8-1=(0111)两者与为0~

判断他是几次幂可以用递归,或者移位

  1. i=-1;
  2. while(n)
  3. {
  4.     n=n>>1;
  5.     i++;
  6. }
  7. cout<


若不能用循环则递归搞起~~
  1. #include<iostream>

  2. using namespace std;

  3. int pow(int x)
  4. {
  5.     if(x==1)
  6.         return 0;
  7.     else
  8.         return 1+pow(x>>1);
  9. }

  10. int main()
  11. {
  12.     int n,i=0;

  13.     while(cin>>n)
  14.     {
  15.         if((n&(n-1))!=0)
  16.             cout<<"no"<<endl;
  17.         else
  18.         {
  19.             i=pow(n);
  20.             cout<<i<<endl;
  21.         }
  22.     }

  23. }
阅读(9247) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~