判断 2 的幂次方、3 的幂次方、4 的幂次方

news/2025/2/16 5:15:39/

1. 2 的幂次方

给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。
如果存在一个整数 x 使得 n == 2^x ,则认为 n 是 2 的幂次方。

2 的 N 次方的二进制必然为 10,100,1000,1000…0 类似的,所以只需要将该整数的二进制表示法与它减 1 的二进制表示法进行与操作,结果为 0 的必然为 2 的 N 次方。

class Solution {
public:bool isPowerOfTwo(int n) {return n>0 && (n&(n-1))==0;    }
};

2. 3 的幂次方——循环法

给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。
整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == 3^x

一个数是 3 的 N 次方,那么该数字一定可以被 3 整除,被 3 整除后不断循环除以 3,直到该数字等于 1 时,返回 true,如果不为 1 则返回 false。

class Solution {
public:bool isPowerOfThree(int n) {if (n == 0){return false;}while (n%3==0){n /= 3;}return n==1 ? true:false;}
};

3. 4 的幂次方——递归法

给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。
整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4^x

class Solution {
public:bool isPowerOfFour(int n) {if (n == 0){return false;}else if (n == 1){return true;}else{return (n%4)==0 ? isPowerOfFour(n/4):false;}}
};

http://www.ppmy.cn/news/603065.html

相关文章

有效完全平方数和求平方根的多种解法

1. 完全平方数 给定一个 正整数 num (1 < num < 2^31 - 1)&#xff0c;编写一个函数&#xff0c;如果 num 是一个完全平方数&#xff0c;则返回 true &#xff0c;否则返回 false 。 1.1 解法一 使用库函数&#xff0c;求得 sqrt(num)&#xff0c;然后遍历 1 到 sqrt(nu…

微服务: sleuth和zipkin的用处与zipkin安装使用(下)

目录 0. 上篇传送门: 1. 前言简介 mq安装传送门: 微服务: 01-rabbitmq的应用场景及安装(docker) 1.1 Sleuth是一款分布式跟踪解决方案。 1.2 Zipkin是一个开源的分布式跟踪系统。 2. zipkin安装方式 2.1 windows下安装zipkin: 2.1.0 下载jar包位置 2.1.1 下载后,找…

计算一个数的 N 次方的多种解法

1. 问题 实现 pow(x, n) &#xff0c;即计算 x 的 n 次幂函数&#xff08;即&#xff0c;x^n &#xff09;。其中&#xff1a; -100.0 < x < 100.0 -2^31 < n < 2 ^31-1 -10^4 < x ^n < 10 ^ 4 2. 思路 方法一 方法二 方法三 使用折半计算&#xff0c;每次…

如何不使用循环输出 1 到 100 和 不使用 * 实现两数相乘【递归实现】

1. 问题 实现一个函数&#xff0c;要求再不使用循环的前提下输出 1 ~ 100 2. 思路 很多时候循环可以使用递归来实现&#xff0c;所以只要设置好递归的截止条件就可以。 3. 实现 #include <iostream>void output(int n) {if (n < 100){std::cout << n <<…

只使用 ++ 操作符实现加减乘除运算

1. 问题分析 加法操作 要实现 ab 的基本思路就是对 a 执行 b 次 操作即可。减法操作 要实现 a-b 的基本思路就是不断地对 b 执行 n 次 操作&#xff0c;直到等于 a 为止&#xff0c;记录这个过程中的操作次数。乘法操作 要实现 a*b 的基本思路就是对 a 执行 b 次相加就能得到…

经典排序算法(冒泡排序、选择排序、插入排序)

1. 冒泡排序 1.1 算法步骤 比较相邻的元素。如果第一个比第二个大&#xff0c;就交换他们两个。对每一对相邻元素作同样的工作&#xff0c;从开始第一对到结尾的最后一对。这步做完后&#xff0c;最后的元素会是最大的数。针对所有的元素重复以上的步骤&#xff0c;除了最后一…

Docker 入门系列(8)— 免 sudo 使用 docker 命令、进入未启动的容器

1. 免 sudo 使用 docker 命令 如果还没有 docker group 就添加一个 sudo groupadd docker将用户加入该 group 内 sudo gpasswd -a ${USER} docker重启 docker 服务 sudo service docker restart切换当前会话到新 group 或者重启 X 会话 newgrp - docker注意&#xff1a;最…

RabbitMQ 入门系列(12)— 交换器分类(direct、fanout、topic)

RabbitMQ的 Exchange&#xff08;交换器&#xff09;分为四类&#xff1a; direct&#xff08;默认&#xff09;headersfanouttopic 其中 headers 交换器允许你匹配 AMQP 消息的 header 而非路由键&#xff0c;除此之外 headers 交换器和 direct 交换器完全一致&#xff0c;但…