求不小于N且二进制串包含K个1的最小的数字
给定正整数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中大整数也支持这些位运算。
求不小于N且二进制串包含K个1的最小的数字的更多相关文章
- 求int最大值以及int二进制
求int最大值:(((unsigned int)(~0))>>1) 求int的2进制串 string str = ""; int iNum = 100; for(int ...
- 485. 找出二进制串中连续的1的个数 Max Consecutive Ones
Given a binary array, find the maximum number of consecutive 1s in this array. Example 1: Input: [1, ...
- Python字符串与二进制串的相互转换
python基础知识之字符编码与转换 - 机壳啦 - 博客园https://www.cnblogs.com/home979/p/7838244.html Python 字符串与二进制串的相互转换 - ...
- 计蒜之道 初赛 第三场 题解 Manacher o(n)求最长公共回文串 线段树
腾讯手机地图 腾讯手机地图的定位功能用到了用户手机的多种信号,这当中有的信号的作用范围近.有的信号作用的范围则远一些.有的信号相对于用户在不同的方位强度是不同的,有的则是在不论什么一个方向上信号强度都 ...
- hdu6003 Problem Buyer 贪心 给定n个区间,以及m个数,求从n个区间中任意选k个区间,满足m个数都能在k个区间中找到一个包含它的区间,如果一个区间包含了x,那么 该区间不能再去包含另一个数,即k>=m。求最小的k。如果不存在这样的k,输出“IMPOSSIBLE!”。
/** 题目:hdu6003 Problem Buyer 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6003 题意:给定n个区间,以及m个数,求从n个区 ...
- hdu 2197 求长度为n的本原串 (快速幂+map)
Problem Description由0和1组成的串中,不能表示为由几个相同的较小的串连接成的串,称为本原串,有多少个长为n(n<=100000000)的本原串?答案mod2008.例如,10 ...
- 二进制中连续k个1-题解
原题传送门[>XJOI<] 重要提示:您的等级必须达到三级五段,否则会被一只小猫痛扁 题目描述: 求最小的m,使得m>=n而且m的二进制表示包含至少连续k个1 输入格式: 输入 ...
- [leetcode]340. Longest Substring with At Most K Distinct Characters至多包含K种字符的最长子串
Given a string, find the length of the longest substring T that contains at most k distinct characte ...
- //给定N个整数序列{A1,A2,A3...An},求函数f(i,j)=(k=i~j)Ak的求和
//给定N个整数序列{A1,A2,A3...An},求函数f(i,j)=(k=i~j)Ak的求和 # include<stdio.h> void main() { ,sum1; ]={,- ...
随机推荐
- my.cnf 配置文件参数解释
my.cnf 配置文件参数解释: #*** client options 相关选项 ***# #以下选项会被MySQL客户端应用读取.注意只有MySQL附带的客户端应用程序保证可以读取这段内容.如果你 ...
- 用emoji表情包来可视化北京市历史天气状况!
用emoji表情包来可视化北京市历史天气状况! 最近有了一个突如其来的想法,主要是看到了R社区有大神做了emoji表情包,并已经打通了ggplot的链接,所以想用ggplot结合emoji表情做一 ...
- how to configure logback for Mybatis to print my SQL
To log SQL statements for particular mybatis mapper set DEBUG (TRACE to see query parameters and res ...
- Objective-C:用命令行参数的格式对文件进行IO操作
// main.m // 03-copyFile // Created by ma c on 15/8/24. // Copyright (c) 2015年. All rights reserved. ...
- hdu 1242 Rescue(BFS入门)
第一次用容器做的BFS题目,题目有个地方比较坑,就是遍历时的方向,比如上下左右能AC,右上左下就WA #include <stdio.h> #include <string.h> ...
- 分享七个绚丽夺目的JQuery导航(还有苹果、猪八戒等),有图有真相
今天来一起看看几个个人觉得比较好的导航.有好几个导航是仿的,比如仿苹果.仿猪八戒等等,但仿得还都不错.也有不少是基于jQuery的.特别是像我这样的懒人,就可以在这些基础上修修改改作为自己网站项目的导 ...
- Java基础(七):重写与重载
一.重写(Override): 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变.即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为. 也就是 ...
- 6. Activity life cycle
An activity can exist in essentially three states: Resumed The activity is in the foreground of the ...
- 【nodejs】使用put方式向后端提交数据
页面代码: <!DOCTYPE html> <html lang="utf-8"> <meta http-equiv="Content-Ty ...
- MySQL数据源在Spring中的配置
干脆把MySQL的数据源配置也一起放这里,以备不时之需. MySQL的驱动包可以从这里 http://pan.baidu.com/s/1d02aZ 下载. 以下粗体部分是需要你根据实际情况调整的. & ...