判断一个整数是否是2的n次方】的更多相关文章

参考:http://bbs.csdn.net/topics/370058619 如题,如何判断一个整数是否是2的N次方,我能想到的方法有两个 1.一直除2,看最后是否等于1.(最笨的方法) 2.转换成2进制,看是否是这个样子的:1,10,100,1000,10000,就是除了最高位是1,其他都是0,或者说只有一个1. 3.当我还在为我能想到第二个方法而沾沾自喜的时候,我看到了下面这种更巧妙的方法 以4(100) 7(0111) 8(1000)为例 4 & 3 --> 100 & 01…
1:简单除法  int i = 128: //待判断的整数  int count = 1: //待判断的整数是2的count次方while (i){if (2 == i){printf("YES: %d\n",count);break;}if (0 == i%2){i /= 2;count++;}else{printf("NO\n");break;}} 2:16进制中1有几个 大家发现没有,凡是2的n次方的整数,它的二进制的所有位中都只有一个1,并且这个1肯定在最高…
题目:判断一个整数能被几个9整除 package com.hanqi.lianxi; import java.io.*; public class Test1 { //判断能否被9整除 static void decide(int m){ if(m % 9== 0) System.out.println ("你输入的数字能够被9整除!"); else System.out.println ("你输入的数字不能够被9整除!"); } public static voi…
最近招聘季,看JULY大哥的面试100题时,碰到这么一个扩展问题: 如何用一个语句判断一个整数是不是二的整数次幂?(此题在编程之美也有) easy, 2的整数次幂的二进制形式只有一个1,只要用i和i-1按位相与,结果为零就说明是: int i; bool b = (i&(i-1))?false:true; (===============只想知道这道题的解法的看到这里就够了,以下都是无关内容===============) 再下一步之前,请思考一个问题:printf("%d",…
关注博客园很久,今天是第一次写博客.先附上一个C题目:写一个函数判断一个整数是否为完全平方数,同时是否该数的各位数至少两个相同的数字 #include <stdio.h> #include <math.h> int IsTheNumber ( const int N ); int main() { int n1, n2, i, cnt; scanf("%d %d", &n1, &n2); cnt = ; for ( i=n1; i<=n2;…
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <input type="text" id="t1" value="" /> <button id="btn">点击<…
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <input type="text" id="t1" value="" /> <button id="btn">点击<…
完成以下代码,判断一个整数是否是奇数: public boolean isOdd(int i) 看过<编程珠玑>的人都知道这道题的答案和其中极为简单的道理. 最普遍的风格,如下: 这个函数的定义要求返回一个布尔类型的值.而 if 后面的括号里面的表达式的值也是一个布尔类型的.由此,可进行如下改进: 奇数可以分为正奇数和负奇数.奇数的数学表达形式为 2k+1 (k≠0).由此,优化如下: 简单分析,做出如下改进: 右移一位相当于该数除以2,右移2位相当于该数除以4,结果没有小数位,都是取整. 左…
判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: 输入: 输出: true 示例 2: 输入: - 输出: false 解释: 从左向右读, 为 - . 从右向左读, 为 - .因此它不是一个回文数. 示例 3: 输入: 输出: false 解释: 从右向左读, 为 .因此它不是一个回文数. 进阶: 你能不将整数转为字符串来解决这个问题吗?   判断一个数是否是回文数. 方法一:主要思路是把原本的数字(x)拆分开,组成一个数字(y),然后判断x…
判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 . 从右向左读, 为 121- .因此它不是一个回文数. 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 .因此它不是一个回文数. 这道验证回文数字的题如果将数字转为字符串,就变成了验证回文字符串的题,没啥难度了,我们就直接来做follow up吧…
一.2的幂次方的基本定义 什么样的数为2的幂次方?例如2^0=1,2^1=2,2^2=4……,符合公式2^n(n>=0)的数称为2的幂次方. 如何判断一个数是否为2的幂次方呢?基本思路:把一个数不断的除以2,得到商与余数,若余数等于1,则这个数必然不是:若余数大于1,则继续除以2,直到商等于1.若商等于1且余数为0,则这个数为2的幂次方. 二.2的幂次方的判断方法 1:把一个数不断的除以2,得到商与余数,若余数等于1,则这个数必然不是:若余数大于1,则继续除以2,直到商等于1.若商等于1且余数为…
在写代码时遇到了“判断一个正整数是否是2的N次方”的问题,不想调用 java.lang 的 Math 类库进行浮点运算,觉得转换为浮点不是个好办法. 遂在网上搜索了一下,发现有人列出来好几种写法,列举几种: 1.通过循环除2:这种方法不值一提,略过: 2.针对32位/64位只有有限个 2 的N次方的常量值,逐个进行比较:额...这个也略过: 3.通过正则表达式进行文本匹配,判断是否2的后面都是 0 :这个绕得更远了... 最后,有一种最简洁优雅的写法:(value & (value -1)) =…
1 import java.util.Scanner; 2 3 public class Question3 { 4 public static void main(String[] args) { 5 //从键盘得到一个整型数 6 System.out.println("请输入一个整数:"); 7 Scanner sc = new Scanner(System.in); 8 int n = sc.nextInt(); 9 sc.close(); 10 //判断n是否为素数 11 Is…
static bool CheckPowerOfTwo(ulong num) { && (num & (num - )) == ; }…
class Solution: def isPalindrome(self, x: int) -> bool: a = x if a<0: return False else: num = 0 while(a!=0): temp = a%10 a = a//10 num = num*10+temp if num==x: return True else: return False…
zju对时间要求比较高,这就要求我们不能简单地暴力求解(三个循环搞定),就要换个思路:因为在循环时,已知a,确定b,c,d,在外重两层循环中已经给定了b和c,我们就不用遍历d,我们可以利用d^3=a^3-b^3-c^3来判断这个d. 看代码: #include <stdio.h> #include <math.h> int main() { ;n<=;++n) { ],b[],c[],count=,i,flag=; ); ;i<n;i++) { int ai= i*i*…
一.题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数.   二.思路解析 此问题使用类似于二分查找的算法.右上角元素(第一行最后一列)的元素是第一个元素与第二行元素构成的递增排序的分割点,因为此元素的左面元素都比此元素小,此元素的下面元素都比此元素大(类似于二分查找中的中点处的元素).所以每次循环,比较目标元素target与右上角元素的大小关系,…
1 //判断任意一个数是9的多少倍 #include <stdio.h> #include <stdlib.h> int main() { printf("请输入任意一个数\n"); int c, a, b; scanf_s("%d", &c); printf("它对9的倍数是:\n"); ){ a = c / ; printf("%d\n", a); } else{ printf("…
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序. 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. def find(target, array): i = j = len(array[]) - : base = array[i][j] if target == base: return True elif target > base: i += else: j -= return False pri…
1 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 2 思路和方法 二叉搜索树:二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值: 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值: 它的左.右子树也分别为二叉排序树. 递归求解: (1)从第0…
//判断t所指字符串中的字母是否由连续递增字母组成. #include <stdio.h> #include <string.h> void NONO(); int fun( char *t ) { ; //使用数组解决 /*for (int i = 1; t[i]!= '\0'; i++) { if ((t[i]-'0') != (t[i - 1] -'0'+1)) a = 1; }*/ //使用指针解决 ) != '\0')//注意这里表达式的书写 { //printf(&qu…
/** * Java得到一个整数的绝对值,不使用任何判断和比较语句,包括API. <br> * 1.不得使用任何API,如Math.abs()等.<br> * 2.不得使用判断语句,如if.for.while.switch.?:等.<br> * 3.不得使用比较语句,如:==. <=.>=.!=. <.>等. <br> * * @author JAVA世纪网(java2000.net, laozizhu.com) */public c…
import java.util.*; class Example2_5 { public static void main(String args[]) { int start=0,end,middle; int a[] = {12,45,67,89,123,-45,67}; int N = a.length; for(int i=0; i<N; i++) { //选择法排序数组 for(int j = i+1; j < N;j++){ if(a[j] < a[i]){ int t =…
v = int(input('请输入一个整数:')) if v % 3 == 0 and v % 5 ==0: print(v,'即是3的倍数又是5的倍数') else: print('不是3或5的倍数')…
问题: Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return –321   Have you thought about this? Here are some good questions to ask before coding. Bonus points for you if you have already thought through this! If the in…
之前记录过JavaScript中判断为数字类型的多种方式,这篇看看如何判断为整数类型(Integer). JavaScript中不区分整数和浮点数,所有数字内部都采用64位浮点格式表示,和Java的double类型一样.但实际操作中比如数组索引.位操作则是基于32位整数. 方式一.使用取余运算符判断 任何整数都会被1整除,即余数是0.利用这个规则来判断是否是整数. function isInteger(obj) { return obj%1 === 0 } isInteger(3) // tru…
1,问题描述 给定一个整数N,该整数的二进制权值定义如下:将该整数N转化成二进制表示法,其中 1 的个数即为它的二进制权值. 比如:十进制数1717 的二进制表示为:0000 0110 1011 0101 故它的二进制权值为7(二进制表示中有7个1) 现在要求一个比N大,且最靠近N的数,且这个数的二进制权值与N相同.(这里不考虑Integer.MAX_VALUE 和负数情形.) 对于有符号的32位整数而言:它们的补码如下: Integer.MAX_VALUE= 0111 1111 1111 11…
Javascript里,想把一个整数转换成字符串,字符串长度为2.  想把一个整数转换成字符串,字符串长度为2,怎么弄?比如 1 => "01"11 => "11"    有几个思路1.判断数字是几位数 然后加上0 2.除以10,然后转换成字符串,然后把小数点删掉 var b = 2 b = (b > 9 ? "" : "0") +b…
题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数.例如输入12,从1到12这些整数中包含1 的数字有1,10,11和12,1一共出现了5次. 分析:首先最先想到的是遍历从1到n的每个数,判断每个数中包含1的个数,再相加. 时间复杂度:如果输入数字为n,n有O(logn)位,我们需要判断每个数字的每一位是不是为1,所以时间复杂度为O(n*logn).如果输入数字很大的时候,就需要大量的计算,效率不高. 接下来观察规律: 从个位到最高位,我们判断每一位1出现的次数.比如 对于数2…
最近在笔试的时候遇到碰一道算法题, 要求判断一个字符串是不是合法的ip地址. 将我的思路发出来分享一下,不一定正确,也不一定是最优的方法.希望能分享一些交流 要求用java或者c来实现,我的java代码: public class Test_ip { //程序入口 public static void main(String[] args) { Solution s = new Solution(); // 业务逻辑放在Solution类里面 //String test_str = "12.34…