求不小于N且二进制串包含K个1的最小的数字

news/2024/7/5 7:39:26

给定正整数N,求一个最小正整数M(M>=N),使得M中连续1的个数不小于K。
输入格式:N K

其中N为大整数,只能进行字符串处理

首先要把N化为二进制串,考察这个二进制串的最后K位;
直接把这个二进制串的最后K位改成1就完了?不行,例如N=1011,K=3,此时M为1110,而不是1111
也就是说,要考虑倒数第K+1位,如果是1,那么将K个1左移,右面置0
再考虑倒数第K+2位,如果是1,继续左移,后面置0

sample = [[1646, 12, 4095],
          [1646, 3, 1646],
          [1646, 5, 1660],
          [1646, 4, 1647]
          ]
for N, K, ans in sample:
    s = bin(N)[2:]
    print('ans', bin(ans)[2:], '=' * 10)
    if len(s) <= K:
        print('1' * K)
    else:
        i = len(s) - K - 1
        while s[i] == '1':
            i -= 1
        ss = s[:i + 1] + '1' * K
        ss += (len(s) - len(ss)) * '0'
        print(ss)

鹏哥说有的人就写了几行就完事了,我也会,只是思维太慢了

sample = [[1646, 12, 4095],
          [1646, 3, 1646],
          [1646, 5, 1660],
          [1646, 4, 1647]
          ]
for N, K, ans in sample:
    ss = int((bin(N | ((1 << K) - 1)).strip('1')[2:] + '1' * K + (len(bin(N)) - 2) * '0')[:max(len(bin(N)) - 2, K)],2)
    print('ans', ans, ss)

解释:
bin(N)|((1<<K)-1)得到'0b110111'这样的结果,让它把末尾的1全部删掉,然后重新拼接上K个1,最后补充若干个0。因为补0补得有点多,所以再截取一下,最后将字符串解释成int
在python中大整数也支持这些位运算。


http://www.niftyadmin.cn/n/3094096.html

相关文章

(转载)cocos2d-X学习之引擎源码目录结构介绍

转载之&#xff1a;http://www.cnblogs.com/lhming/archive/2012/07/01/2572262.html Cocos2d-x的目录结构如下&#xff1a; 目录的具体结构介绍如下&#xff1a; Box2D&#xff1a;物理引擎Box2D的相关源文件 Chipmunk&#xff1a;物理引擎chipmunk的相关源文件 cocos2dx&a…

Java 反射(二)

作者&#xff1a;郑剑锋链接&#xff1a;https://www.zhihu.com/question/24304289/answer/147529485来源&#xff1a;知乎著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。首先我们了解一下JVM&#xff0c;什么是JVM&#xff0c;Java的虚拟机…

简单提高数据库查询效率的办法

为什么80%的码农都做不了架构师&#xff1f;>>> 全局表 所谓全局表&#xff0c;就是有可能系统中所有模块都可能会依赖到的一些表。比较类似我们理解的“数据字典”。为了避免跨库join查询&#xff0c;我们可以将这类表在其他每个数据库中均保存一份。同时&#xf…

(转载)cocos2d-X学习之坐标系统

转载之&#xff1a;http://www.cnblogs.com/lhming/archive/2012/07/01/2572272.html 在cocos2d-x中有两种坐标系&#xff0c;分别是屏幕坐标系和open gl坐标系。 屏幕坐标系&#xff1a;x轴朝右&#xff0c;y轴朝下。默认原点在左上角&#xff0c;如下图&#xff1a; 这个是一…

微信小程序真机预览体验测试教程

前言 从小程序内测开始&#xff0c;有很多优秀的创意、想法已经在内测阶段开发完成。目前小程序开始公测&#xff0c;开放了小程序的申请和注册&#xff0c;但是还无法正式发布。那么我们在未正式发布之前&#xff0c;能不能在真机上体验一回微信小程序呢。答案是肯定的。如有微…

转MFC 消息机制

本文转载之博客园 梦想SKY 文章&#xff0c;在此&#xff0c;感谢原作者的书写&#xff0c;原文地址:http://www.cnblogs.com/dsky/archive/2012/05/28/2520853.html ---- MFC是Windows下程序设计的最流行的一个类库&#xff0c;但是该类库比较庞杂&#xff0c;尤其是它的消…

C++ 把struct 当作类试用

在看某个开源项目中&#xff0c;有这样一段代码&#xff0c;真心不知道这样是好是坏好处具体在哪里呢&#xff1f;希望各位看官&#xff0c;留下自己的看法吧&#xff01;~ struct TDllProxy {TDllProxy(LPCSTR szDllPath) : m_hModule(NULL){m_hModule LoadLibraryA(szDllPa…

haproxy代理设置及配置文件详解

haproxy代理配置&#xff1a;结果图&#xff1a;haproxy代理配置2方式&#xff1a;结果配置&#xff1a;Haproxy的配置文件由两部分组成&#xff1a;全局设定和对代理的设定&#xff0c;共分为五段&#xff1a;global、Default、frontened、backend、listen配置文件格式&#x…