一个数是否为2的次幂

 1 #include<iostream>
 2 #include<vector>
 3 using namespace std;
 4 int fun(int i)
 5 {
 6     if(i==1){
 7     return 0;
 8     }
 9       if (i&&!(i&(i-1)))

10             return 1;
11
12       else
13             return 0;
14 }
15
16 int main()
17 {
18       vector<int> vel;
19       int x;
20       bool A;
21       while(cin>>x)
22       {
23             A=fun(x);
24             vel.push_back(A);
25       }
26       vector<int>::iterator it;
27       for(it=vel.begin();it!=vel.end();it++)
28       {
29             if(*it==1)
30             {
31                 cout<<"true"<<endl;
32             }
33             else{
34             cout<<"false"<<endl;
35             }
36       }
37       return 0;
38 }

输入若干行,判断是否为2的次幂。。。。。

时间: 2024-08-29 14:55:14

一个数是否为2的次幂的相关文章

判断一个数是否是2的方幂

分析: 2的方幂的二进制表达是一种有规律的数,如:2 = 10,4 = 100, 8 = 1000,等等,也就是说它的二进制表示中只有最高位为1,其余的为0,那么想想,如果把这个数减一的话其二进制就变成了又一个有规律的数,如:2-1=01,4-1=011,8-1=0111,看看,把减一的结果与它们本身想与,是不是为0了.好了,结果出来了. if(n>0&&(n&(n-1))==0) n是2的方幂 判断一个数是否是2的方幂

判断一个数是3的n次幂

思路 :用当前值除以3 获得一个值 a , b = parseInt(a)  c = Math.pow(3,b); 用c 除以 要判断的数,如果能除尽, 则是, 如果除不尽, 则不是. /** * @param {number} n * @return {boolean} */ var isPowerOfThree = function(n) { if(n <= 0){ return false; } if(n == 1){ return true; } var index = Math.log

判断素数 一个数的约数 一个整数的幂次约分

1 #include<iostream> 2 #include<algorithm> 3 #include<vector> 4 #include<map> 5 using namespace std; 6 7 //素数测试 8 bool is_prime(int n) 9 { 10 for(int i=2; i*i <= n; i++) 11 { 12 if(n%i==0) return false; 13 } 14 } 15 16 //约数枚举 17

如何判断一个数是2的幂

如何判断一个数是2的幂,主要是要找出2的幂次方的数的特点.我们知道,1个数乘以2就是将该数左移1位,而2的0次幂为1, 所以2的n次幂(就是2的0次幂n次乘以2)就是将1左移n位, 这样我们知道如果一个数n是2的幂,则其只有首位为1,其后若干个0,必然有n & (n - 1)为0.(在求1个数的二进制表示中1的个数的时候说过,n&(n-1)去掉n的最后一个1).因此,判断一个数n是否为2的幂,只需要判断n&(n-1)是否为0即可. bool powerof2(unsigned in

输入一个整数,判断其是否是2^n,是就输出这个数,不是就输出和它最接近的为2^n的那个整数。

输入一个整数,判断其是否是2^n,若是,输出这 //个数,若不是,输出和它最接近的为2^n的那个整数. 附加源代码1: #include<stdio.h> #include<stdlib.h> #include<math.h> int main() { int input;//键盘输入一个整数input int i,j;//i,j待会儿存放input与左边和右边的为2^n的差值 int m,n;//保存左边,右边的与inout最接近的2^n printf("请

LightOj 1278 - Sum of Consecutive Integers(求奇因子的个数)

题目链接:http://lightoj.com/volume_showproblem.php?problem=1278 题意:给你一个数n(n<=10^14),然后问n能用几个连续的数表示; 例如: 15 = 7+8 = 4+5+6 = 1+2+3+4+5,所以15对应的答案是3,有三种; 我们现在相当于已知等差数列的和sum = n, 另首项为a1,共有m项,那么am = a1+m-1: sum = m*(a1+a1+m-1)/2  -----> a1 = sum/m - (m-1)/2 a

CodeForces 185A. Plant(矩阵快速幂)

题目链接:http://codeforces.com/problemset/problem/185/A Dwarfs have planted a very interesting plant, which is a triangle directed "upwards". This plant has an amusing feature. After one year a triangle plant directed "upwards" divides int

js 如何判断一个数字是不是2的n次方幂

昨天去面试时,面试官问了一道面试题,说如何判断一个数是不是2的n次方幂,我当时不知道2的n次方幂是什么(糗大发了??),还好给我解释了一下.最后回家上网查查资料,整理了一下方法. 方法一 如何判断一个数是否是2的n次方幂,其简单判断方法就是这个数num直接除2,若余数为0,则num/2再除2,再判断是不是余数是不是0,是的话继续按上一步来,直到最后为num=1. 比如: 2  2%2=0  (2/2)=1                         是  4  4%2=0  (4/2)%2=

将一个十进制数转为二进制形式并判断它是否是2的n次幂

java提供了十进制转化为二进制.十六进制.八进制的函数:在java.lang.Integer这个API包中,转换函数如下 public static String toBinaryString(int i) public static String toHexString(int i) public static String toOctalString(int i) 这3个函数都可以将十进制的整数转换成二.一六.八进制数,不过转换后的结果都是字符串的形式. 在这里介绍下转换为二进制的情况.