2的整数次幂 面试算法(一)

import java.util.Scanner;

public class Pow {
    public static void main(String []args) throws Exception {
        Scanner s = new Scanner(System.in);
        int i = s.nextInt();
        System.out.println(test(i));
    }
    /**
     * 面试算法题目
     * 描述
     * 请使用递归的方式判断一个给定的整数是否为2的整数次幂。
     * 提示:当一个数 n = 2^k (k为非负整数)时,我们说n是2的整数(k)次幂。比如 2、4、8、16都是2的整数次幂,但3、7、14就不是。
     *
     * 输入
     * 一行,一个正整数n
     *
     * 输入约束:
     * 1<=n<=2^31
     *
     * 输出
     * 一行,数字1或0。
     * 如果输入为2的整数次幂,则输出1,否则输出0。
     * @param n
     * @return
     */
    static int test(int n){
        if (n < 1) return 0;
        if(n == 1) return n;
        if(n % 2 > 0) return 0;
        return test(n/2);
    }
}

  

原文地址:https://www.cnblogs.com/412013cl/p/11768213.html

时间: 2024-07-31 22:12:40

2的整数次幂 面试算法(一)的相关文章

面试官:判断一个数是否为2的整数次幂

判断一个正整数是否是2的整数幂(如4是2的2次方,返回true:5不是2的整数次幂,则返回false).要求性能尽可能高. 第一种考虑(乘法) 创建一个中间变量temp,初始值是1,然后进入一个循环,每次循环都让temp和目标值进行比较,如果相等,则说明目标是2的整数次幂, 如果不相等,则让temp乘以2,继续循环比较,直到temp的值大于目标整数时,说明整数不是2的整数次幂. 比如:18 1*2=2;2比18小继续 2*2=4;4比18小继续 4*2=8;8比18小继续 8*2=16;16比1

POJ 1995 Raising Modulo Numbers (数论-整数快速幂)

Raising Modulo Numbers Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 4379   Accepted: 2516 Description People are different. Some secretly read magazines full of interesting girls' pictures, others create an A-bomb in their cellar, oth

POJ1995 Raising Modulo Numbers【整数快速幂】

题目链接: http://poj.org/problem?id=1995 题目大意: N个人在一起玩游戏,每个人默写两个数字Ai.Bi,在同一个时间公开给其他玩家看.游戏的目的是 为了看谁能够在最快的时间求出所有的Ai^Bi的和对M取模的值.那么问题来了:你能够快速算出 (A1B1+A2B2+ ... +AHBH)mod M 的值吗? 思路: 用二分整数快速幂算法计算出每一个Ai^Bi,然后依次相加取模. AC代码: #include<iostream> #include<algorit

BAT面试算法精品课直通BAT面试算法精品课购买优惠码-牛客网

BAT面试算法精品课,直通BAT面试算法精品课. 大家可以先看试看的内容,视频短小精悍,切中解题的要害.既快速掌握核心知识又能节约复习时间. 反正我是不喜欢拖拖拉拉,长篇大论的视频课程. 况且知识面涵盖的比较广,适合找工作复习用. 第一次购买课程,觉得价格也能接受. 如果你也对这门课感兴趣,可以使用以下优惠码,还能优惠10元 优惠码:Axn54dY 或直接打开链接 http://www.nowcoder.com/courses/1?coupon=Axn54dY

数值的整数次幂

1. 题目 实现函数double Power(double base, int exponent),求base的exponent次幂.不得使用库函数,同时不需要考虑大数问题. 2. 分析 首先需要确定base以及exponent的范围,因为exponent大于0不会有人和限制.此题为求数值的整数次幂,因此需要考虑其小于0的情况. (1) base=0.0与exponent<0时,数据输入错误. (2) base!=0.0与exponent>0时,正常累乘. (3) base!=0.0与expo

面试算法:利用堆栈计算逆向波兰表达式

更详细的讲解和代码调试演示过程,请参看视频 如何进入google,算法面试技能全面提升指南 给定一个四则运算表达式的字符串,如果该表达式满足逆向波兰表达式,那么该字符串要满足以下条件: 1: 该表达式含有一个数字字符或一串数字字符. 2:它拥有给定格式,如"A, B, .",其中A,B是逆向波兰表达式,句号.表示的是四种运算符"+,-,*,/"其中之一. 例如字符串"3,4,*,1,2,+,+"就满足逆向波兰表达式,该表达式的值为:3 * 4 +

面试算法实习生

昨天刚开始是笔试,完事后两面技术面,最后hr面.第一次面试算法实习生,在此做下笔记,记录面试问题与自己的不足. 笔试: 回来看牛客网,居然发现大部分都有,但可惜我还没刷. 回忆下知识点从网上搜出这套题好多都有(2,5,6,7,8,9,21,42,46,48,49,53,55) 一.选择题 1. 某超市研究销售纪录数据后发现,买啤酒的人很大概率也会购买尿布,这种属于数据挖掘的哪类问题?(A) A. 关联规则发现 B. 聚类 C. 分类 D. 自然语言处理 2. 以下两种描述分别对应哪两种对分类算法

POJ 2154 Color(组合数学-波利亚计数,数论-欧拉函数,数论-整数快速幂)

Color Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7693   Accepted: 2522 Description Beads of N colors are connected together into a circular necklace of N beads (N<=1000000000). Your job is to calculate how many different kinds of th

HDU 2817 A sequence of numbers 整数快速幂

A sequence of numbers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4550    Accepted Submission(s): 1444 Problem Description Xinlv wrote some sequences on the paper a long time ago, they might