当前位置: 首页 > news >正文

python每日一题练习---简单题目

给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。

整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4x

别拦着我 我要写个简单题 我觉得就是除以四 如果最后能是这个数除以4 结果是可以整除 那就是4的幂次方

直接来写代码 这个简单

class Solution(object):def isPowerOfFour(self, n):if n==0:return Falseif n==1:return Trueif n%4!=0:return Falsereturn True
solution=Solution()
result=solution.isPowerOfFour(6)
print(result)

首先这个忘记写范围了 然后就是不长脑子 是的 是4的幂次方那么一定是4的倍数 那么是4的倍数一定是4的幂次方吗?不是的 脑子飞走了 再改

class Solution(object):def isPowerOfFour(self, n):if n<=0:return Falseif n==1:return Truewhile n>1:if n%4!=0:return Falsen=n//4return True
solution=Solution()
result=solution.isPowerOfFour(8)
print(result)

改一下就好了 这个题很简单 我们来看一下进阶 你能不使用循环或者递归来完成本题吗?

那我们来思考一下 有没有不使用循环 也不使用递归的方法  大家一起看一下这个4的幂次方有什么特色 首先就是只有一个1 然后就是这个1是在偶数位的(从左往右是从0开始编号的)

想一下只有一个是1 这个代码咋写?额这个需要开一下脑洞 就比如4 是100 3是011 那么就是二者按位与是0 只有一个只有一个1 减一之后的数字才会是除了这位之外其余都是1 所以现在这是第一个条件

但是这个不够  比如10和01也是 但是此时10并不是4的倍数 所以还要满足的是这个1要在偶数位置上 也就是100 10000这样的情况 那么这个代码咋写呢? 

这个我也不会 大家一起学习一下这个 0xAAAAAAAA = 10101010101010101010101010101010(32位) 可以看到这些1都是在奇数位上的 那么如果这个n和这个与起来是0的话 就证明这个就是1是在偶数位上的

所以代码就是下面的:

class Solution(object):def isPowerOfFour(self, n):if n<=0:return Falseif (n & (n-1))==0 and (n & 0xAAAAAAAA) == 0:return Truereturn False
solution=Solution()
result=solution.isPowerOfFour(8)
print(result)

大家通过这个代码可以学习到关于4的幂次方的关于二进制得规律以及跟减一之间的关系  以及这个0xAAAAAAAA是什么 就很好了注意这个符号&就是会把两个数字转化为二进制的 

如果喜欢这个代码 请点个赞~

http://www.dtcms.com/a/308611.html

相关文章:

  • 基于STM32设计的景区便民服务系统(NBIOT)_261
  • IDEA识别lombok注解问题
  • MySQL常用命令完整指南
  • systmctl的作用,使用场景和用法
  • 硬件-音频学习DAY1——音箱材料选择:密度板为何完胜实木
  • 动手学习深度学习-深度学习知识大纲
  • 云迁移技术深度解析:核心原理与最佳实践
  • Python删除字符串的3种高效方法
  • Spring Boot + MinIO + KKFile:三步搭建企业级文件预览系统
  • Mysql索引失效问题及其原因
  • 【Leetcode】2683. 相邻值的按位异或
  • 五、cv::SparseMat的介绍和使用
  • 是采用示例模板,还是采用json的结构化数据,哪种方式会让llm的输出更加稳定?
  • 查询目前服务器所占的带宽的命令(上传和下载)
  • CNN卷积神经网络之LeNet和AlexNet经典网络模型(三)
  • c语言的编译链接
  • Winform PathGradientBrush类使用
  • C#程序本地运行正常,通过网络下载报错:FileLoadException:“未能加载文件或程序集“xxx.dll”或它的某一个依赖项。
  • 【pycharm的使用】
  • Qwen3-30B-A3B-Thinking-2507 推理模型深度评测
  • 250721脑电分析课题进展——手工特征总结
  • lsof命令
  • SSO面临的问题
  • 为什么有时神经元会输出类似(甚至一样)?
  • 行业分享丨从工具应用到体系进化:东风商用车仿真体系建设与实践
  • 【源力觉醒 创作者计划】文心一言与deepseek集成springboot开发哪个更方便
  • 【力扣】面试经典150题总结01-数组/字符串
  • Dev-C++ 6.3 安装与使用指南:适合新手的C/C++编程工具
  • Allegro实用技巧-Snap-命令行移动
  • Android端RTMP低延迟播放器在工业与智能场景下的架构与落地