首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >LeetCode 1780. 判断一个数字是否可以表示成三的幂的和(位运算)

LeetCode 1780. 判断一个数字是否可以表示成三的幂的和(位运算)

作者头像
Michael阿明
发布于 2021-09-06 02:10:05
发布于 2021-09-06 02:10:05
63200
代码可运行
举报
运行总次数:0
代码可运行

文章目录

1. 题目

给你一个整数 n ,如果你可以将 n 表示成若干个不同的三的幂之和,请你返回 true ,否则请返回 false 。

对于一个整数 y ,如果存在整数 x 满足 y==3x,我们称这个整数 y 是三的幂。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
示例 1:
输入:n = 12
输出:true
解释:12 = 3^1 + 3^2

示例 2:
输入:n = 91
输出:true
解释:91 = 3^0 + 3^2 + 3^4

示例 3:
输入:n = 21
输出:false
 
提示:
1 <= n <= 10^7

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/check-if-number-is-a-sum-of-powers-of-three 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 系数每一位是 0 或者 1,用数据范围内的 二进制数枚举系数的组合
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution {
public:
    bool checkPowersOfThree(int n) {
        int s = (1<<15);
        vector<int> pow3(16, 1);
        for(int i = 1; i <= 15; i++)
            pow3[i] = pow3[i-1]*3;
        for(int i = 0; i <= s; i++) 
        {	// 系数是 i 
            int num = 0;
            for(int j = 0; j <= 15; j++)
            {
                if(1&(i>>j))//第 j 位系数 是 1
                    num += pow3[j];
            }
            if(num == n)
                return true;
        }
        return false;
    }
};

292 ms 5.9 MB C++

  • 从最大的位开始减
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution {
public:
    bool checkPowersOfThree(int n) {
        int s = (1<<15);
        vector<int> pow3(16, 1);
        for(int i = 1; i <= 15; i++)
            pow3[i] = pow3[i-1]*3;
        for(int i = 15; i >= 0; --i)
        {	
            if(n >= pow3[i])
                n -= pow3[i];
        }
        return n==0;
    }
};

0 ms 5.9 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/03/07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
给Python学习者的文件读写指南(含基础与进阶,建议收藏)
对于初学者来说,一份详尽又清晰明白的指南很重要。今天,猫猫跟大家一起,好好学习Python文件读写的内容,这部分内容特别常用,掌握后对工作和实战都大有益处。学习是循序渐进的过程,欲速则不达。文章较长,建议大家收藏,以备复习查阅哦。
Python猫
2019/04/10
1K0
【13】Python之常用文件操作
f=open('so_file',encoding="utf-8")  #打开文件,并读取。Windows上默认字符集GDK,所以这里指定了字符集,不然会报错。(#UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 106: illegal multibyte sequence ) data=f.read()  #将读取的内容赋值给data print(data) f.close()  #一定要关闭,才是一个完成的读取文件方式。
py3study
2020/01/06
4330
python读取txt文件(多种方法)「建议收藏」
line.strip() 去除首尾空格 encoding 编码格式 utf-8,gbk
全栈程序员站长
2022/08/23
2.6K0
python读取txt文件(多种方法)「建议收藏」
【十】python基础之文件处理
给要打开的文件对象指定一个名字,这样可在完成操作之后迅速关闭文件,防止一些无用的文件对象占用内存
菲宇
2019/06/13
7420
【十】python基础之文件处理
【愚公系列】2021年12月 Python教学课程 25-Python文件读写
写程序过程中,我们做的一切操作,都是在内存里进行的。如果一旦断电或发生意外,那么我们的工作成果将瞬间消失。们还缺少将数据在本地文件系统进行持久化的能力,白话讲就是文件的读写能力。
愚公搬代码
2021/12/16
2870
python3–文件操作
File文件操作 Python 提供了必要的函数和方法进行默认情况下的文件基本操作。你可以用 file 对象做大部分的文件操作。 open 函数 必须先用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写。 语法: file object = open(file_name [, access_mode][, buffering]) 各个参数的细节如下: file_name:file_name变量是一个包含了你要访问的文件名称的字符串值。 access_mod
老七Linux
2018/05/09
1.2K0
一文搞懂Python文件读写
很多童鞋困扰于读写文件的各种模式(如阅读、写入、追加等),以及搞不清open、read、readline、readlines、write等方法的使用。
派大星的数据屋
2022/04/02
1.3K0
一文搞懂Python文件读写
图解python | 文件读写
教程地址:http://www.showmeai.tech/tutorials/56
ShowMeAI
2022/02/23
4700
图解python | 文件读写
Python文件操作
文件就是把一些存储存放起来,可以让程序下一次执行的时候直接使用,而不必重新制作一份,省时省力。 操作文件通常有3个步骤:打开文件、读取文件、关闭文件。
楚客追梦
2022/11/11
4900
Python文件操作
python文件基础之(文件操作)
    在之前学习了python的列表、元组、集合等知识,接下来将python的文件相关的知识做一总结和分析。
py3study
2020/01/15
7950
06 . Python3入门之IO编程(文件操作)
4. f.write() f.write(string)将string写入到文件中,然后返回写入的字符数.
iginkgo18
2020/09/27
8600
06 . Python3入门之IO编程(文件操作)
python元组,文件的操作
新手刚刚开始学习python,如有写错或者写的不好的地方,请大家多多指导! python元组相加 a = (1,2) b = (3,4) a + b 元组运用乘法 (1,2) * 4  #在这里边,元组不会被当成数字来计算,而是输出4次 给字母类型的元组拍 t = ('bb,','dd','aa','cc') tm = list(t) tm.sort()    #然后输出tm t = tuple(tm) 用for的方式运算 t = (1,2,3,4,5) l = [x + 20 for x in t] 替换元组 t = (1,[2,3],4) t[1][0] = 'spa'   #t元组中第二个数值之后紧挨着的数值 python文件操作 常见的文件运算 output = open(r'd:\a.py', 'w')   创建输出文件(w是指写入) input = open('date', 'r')        创建输入文件(r是指读写) input = open('date')             与上一行想同(r是默认值) input.read()                     把整个文件读取进单一字符串 input.read(N)                    读取之后的N个字节,到一个字符串 input.readline()                 逐行读取,第一次读取第一行,第二次读取下一行 alist = input.readlines()        读取整个文件到字符串列表 output.write(as)                 写入字节字符串到文件 output.writelines(alist)         把列表内所有字符串写入文件 output.close()                   手动关闭(当文件收集完成是会替你关闭文件) output.flush()                   把输出缓冲区刷到硬盘中,但不关闭文件 anyFile.seek(N)                  修改文件位置到偏移量N处以便进行下一个操作 for line in open('data'): use line  文件迭代器一行一行的读取 open('f.txt', encoding='latin-1')   python3.0unicode文本文件(str字符串) open('f.bin', 'rb')                 python3.0二进制byte文件(bytes字符串) 实例应用 myfile = open('myfile.txt', 'w')     #创建一个myfile.txt文件,并打开进行写入 myfile.write('hello,world\n')         myfile.write('good bye'\n)           #\n表示转行 myfile.close()               #关闭文件 然后打开本地目录,看看文件内容是否一样 读取文件 myfile = open('myfile.txt')     #打开文件,默认是只读 myfile.readline()              #读取第一行 myfile.readline()              #读取下一行 把整个文件读取进单一字符串 open('myfile.txt').read()   #把所以文件一次性读取完,\n之后的表示下一行 使用打印的方式来读取 print(open('myfile.txt').read())    #这样处理的结果比较清晰,隔行分开 用for的方式来逐行读取文件 for line in open('myfile.txt'):     print(line,end='') 以二进制的方法打开文件 data = open('myfile.txt', 'rb').read()  #这样的话效果不太明显,可以创建文本写入数字开看看 data[4:8] data[0] bin(data[0])    #二进制的方式显示一个文件 文件存储 x, y, z = 43, 44, 45 s = 'spam' d = {'a': 1,'b': 2} l = [1,2,3] f = open('data.txt', 'w') f.write(s + '\n')    #直接将s插入然后转行 f.write('%s,%s,%s\n' % (x,y,z)) f.write(str(l) + '$' str(d) + '\n')    #str输出l + str输出的d 然后读取看下结果 a = open('data.txt').read() print(a) 去掉多余的行 f = open('data
py3study
2020/01/06
1.1K0
Python迭代和解析(2):迭代初探
for的关键字在于"迭代"和"遍历"。首先要有容器数据结构(如列表、字符串)存储一些元素供迭代、遍历,然后每次取下一个元素通过in来测试元素的存在性(从容器中取了元素为何还要测试?因为容器可能会在迭代过程中临时发生改变),每次取一个,依次取下去,直到所有元素都被迭代完成,就完成了遍历操作。
py3study
2020/01/22
9360
Python文件读取方法:read()、readline()和readlines()的区别
在Python中,读取文件是一项常见的任务。Python提供了多种方法来读取文件内容,其中包括read()、readline()和readlines()方法。本文将介绍这些方法的区别和使用场景。
霍格沃兹测试开发Muller老师
2023/09/07
5570
python入门到实战系列二
这节课继续学习python 元组 与 字典 两个数据类型还有循环、条件判断等相关知识,知识点有零散,但工作中需要把这些零散的知识点串起来解决问题。
高楼Zee
2022/05/17
9510
python入门到实战系列二
Python - 文件读取read()、readline()、readlines()区别
读取文件的三个方法:read()、readline()、readlines()。均可接受一个方法参数用以限制每次读取的数据量,但通常不使用
小菠萝测试笔记
2020/06/09
1.2K0
【python】读取和输出到txt
python常用的读取文件函数有三种read()、readline()、readlines()
py3study
2020/01/14
2.5K0
一文搞定Python读取文件的全部知识
文件处理是一种用于创建文件、写入数据和从中读取数据的过程,Python 拥有丰富的用于处理不同文件类型的包,从而使得我们可以更加轻松方便的完成文件处理的工作
周萝卜
2022/09/28
2.3K0
[PYTHON] 核心编程笔记之九-Py
内建函数open()[以及file()]提供了初始化输入/输出(I/0)操作的通用接口,open()内建函数成功打开文件后会返回一个文件对象,否则引发一个错误,当操作失败,Python会产生一个IOError异常
py3study
2020/01/07
7070
Python 文件输入/输出——读写文件
在 Python 中, IO 模块提供了三种 IO 操作的方法;原始二进制文件、缓冲二进制文件和文本文件。创建文件对象的规范方法是使用open()函数。
很酷的站长
2023/08/15
5140
Python 文件输入/输出——读写文件
推荐阅读
相关推荐
给Python学习者的文件读写指南(含基础与进阶,建议收藏)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验