【每日一题Day51】LC1780判断一个数字是否可以表示成三的幂之和 | 进制转换

判断一个数字是否可以表示成三的幂之和【LC1780】

Given an integer n, return true if it is possible to represent n as the sum of distinct powers of three. Otherwise, return false.

An integer y is a power of three if there exists an integer x such that y == 3x.

属实想不到

进制转换

  • 思路:当我们把二进制转换为十进制时,采用的方法是二的幂之和。那么,本题可以将十进制转换为三进制,当所有位的值为0或者1时,满足题意,返回true;但有一位值为2时,返回false

  • 实现

    class Solution {
        public boolean checkPowersOfThree(int n) {
            while (n > 0){
                if (n % 3 == 2){
                    return false;
                }
                n /= 3;
            }
            return true;
        }
    }
    
    • 复杂度

      • 时间复杂度:O(logn)O(log n)O(logn)
      • 空间复杂度:O(1)O(1)O(1)

二分

  • 思路:小于10710^7107的3的幂次方一共只有15个,因此可以先打表,然后二分查找最接近target的3的幂次方,如果已经使用过该三进制或者target<0,那么返回false;当target==0时,返回true【感觉也是有点进制转换在里面的】

  • 实现

    class Solution {
        public boolean checkPowersOfThree(int n) {
            int[] tri = new int[16];
            for(int i = 0;i<16;i++){
                tri[i] = (int)Math.pow(3,i);
            }
            int temp = n;
            boolean[] vis = new boolean[16];
            int l = 0,r = 15;
            while(temp > 0){
                l = 0;
                while(l<r){
                    int mid = l + r + 1 >> 1;
                    if(tri[mid] > temp) r = mid - 1;
                    else l = mid;
                }
                if(vis[l]) return false;
                temp -= tri[l];
                vis[l] = true;
            }
            return temp == 0;
        }
    }
    
    • 复杂度

      • 时间复杂度:O(logn)O(log n)O(logn)
      • 空间复杂度:O(C)O(C)O(C)
基于单片机的多功能电子时钟设计 一、设计目的 (1) 掌挥常见单片机系统的设计、仿真与调试方法: 掌握多功能电子时钟相关模块电路的使用方法; (2) 培养科学研究、工程创新的工作能力,获得工程设计、组装调试的实践 (3) 经验。 二、设计内容 多功能电子时钟是一种可以显示时间、日期、温度等信息的电子设备。它 通常具有多种显示模式,可以根据用户的需要进行切换。同时多功能电子时钟莱 具闲钟、计时器等实用功能,以满足用户的不同需求。 1.主要功能: 本系统使用 AT89C51单片机作为控制器,井以DS1302申行时钟日历芯片来 记录日期时间。 DS1302芯片可以精确地计时,并员有年补位等多种功能。 采使用 DS18820芯片进行温度采策,使 LCD1602液品显示块进行数据显示。 液晶显示模快可以同时显示年、月、日、时、分、秒,并具有时间校准等功能。 2.主要快: 1)传感器监测模块:可采用DHT11.DS18820等传感器进行当前温度或湿度的 监测,并显示: 2)时间处理模块:可采用DS1302进行计时设置: 3)显示模块:可采用LC01602、 OLED.数码管等进行数据的显示: 4)按键设置模扶:采用若干按健进行时间参数设置与功能切换; 4)警报模块:当时间达到设定值时,蜂鸣器鸣叫: 5) STC89C52单片机最小系统 三、设计要求 (1)自主进行各模块元器件及参数选择: (2)西出电路原理图(或仿真电路图): (3)能够进行各模快程序设计; 《4)在系统调试成功的基础上撰写设计报告,报告内容包括:系统设计思路,方 案确定、各扶工作原理、制作调试及运行结果的全过程心得体会。井附上有 关资料图纸: 1系统运行流程图: 2 系统总原理图; 3 元器件清单; 系统实际运行图: 4 5调试小结。 根据上文写基于单片机的多功能电子时钟设计代码
06-23
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值