开关灯&调整电平

本文探讨了在逻辑电路中调整电平的过程,其中每个观测点根据特定规则在低电平和高电平之间切换。经过多轮调整后,需要确定处于高电平状态的观测点数量。这个问题可以通过分析数的因子个数来解决,特别是寻找1到n之间的完全平方数,因为它们的因子个数为奇数,不会被抵消。文章提供了示例和分析,指出这是一道2015年百度大数据开发工程师面试题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

See this article from my Blog :https://dyingdown.github.io/2021/08/31/%E5%BC%80%E5%85%B3%E7%81%AF-%E8%B0%83%E6%95%B4%E7%94%B5%E5%B9%B3/

乐鑫02. 调整电平

某实验逻辑电路中,初始时有 cnt 个观测点处于低电平状态。

对于某个观测点的电平调整意味着:如果观测点处于低电平,会被调整为高电平;而观测点处于高电平,会被调整为低电平。

第 1 轮,每个观测点调整一次电平。即,所有观测点处于高电平;

第 2 轮,每两个观测点调整一次电平。即,第 1、3、5 … 个观察点不调整,第 2、4、6 … 个观察点调整;

第 3 轮,每三个观测点调整一次电平。即,第 1、2、4、5 … 个观察点不调整,第 3、6 … 个观察点调整;

i 轮,每 i 观测点调整一次电平。 而第 cnt 轮,你只调整最后一个观测点的电平。

请找出 cnt 轮之后有多少处于高电平状态的观测点。

示例 1:

输入:cnt = 4
输出:2 
解释:
初始时, 电平状态为 [低, 低, 低,低],
第一轮后, 电平状态 [高, 高, 高, 高],
第二轮后, 电平状态 [高, 低, 高, 低],
第三轮后, 电平状态 [高, 低, 低, 低],
第四轮后, 电平状态 [高, 低, 低, 高], 

最终有 2 个处于高电平状态的观测点,因此返回 2

示例 2:

输入:cnt = 0
输出:0

示例 3:

输入:cnt = 2
输出:1

提示:

  • 0 <= cnt <= 109

This is also a problem of “2015 百度 大数据开发工程师 的面试题”

Analysis

电平能被调整的时候只有这个轮数n是改观测点的因子。

并且当因子不同的时候,两个因子就能抵消调整。

所以因子个数是复数的时候,就可以相当于没有进行操作,处于低电平。

所以就是找到因子个数是单数的的观测点。即1~n之间的因子个数是单数的数的数量。

因为任意一个数都能表示成a*b的形式,当a = b的时候,则只能调整一次,不能抵消。其余的因子都可以抵消。

所以就是找1~n中的完全平方数。

Code

class Solution {
public:
    
    int adjustLevel(int cnt) {
        int i = 1;
        int ans = 0;
        while(sqrt(cnt) >= i) {
            ans ++;
            i ++;
        }
        return ans;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值