二进制中连续k个1-题解
原题传送门[>XJOI<] 重要提示:您的等级必须达到三级五段,否则会被一只小猫痛扁
题目描述:
求最小的m,使得m>=n而且m的二进制表示包含至少连续k个1
输入格式:
输入两个整数n,k
输出格式:
输出一个整数
样例输入1:
7 2
样例输出1:
7
样例输入2:
364269800189924 33
样例输出2:
364273356242943
约定:
0<=n<250,1<=k<=50
解法:
今天没什么时间,我先简单讲讲
很简单,枚举长度为k的一段1,再在其他位上添加1使得m>=n
代码:(不要抄袭*INF)
#include <cstdio> long long bin[]; int main()
{
long long n, k;
scanf("%lld %lld", &n, &k);
long long _bin = ;
bin[] = ;
for (int i = ; i <= ; i++)
{
bin[i] = bin[i-]*;
}
long long k1 = ;
for (int i = ; i < k; i++)
k1 *= ;
k1--;
long long temp, ans = , cur_ans;
if (k1 > n)
printf("%lld", k1);
else
{
while (k1 <= n)
{
temp = n - k1;
cur_ans = k1;
for (int i = ; i >= ; i--)
{
if (temp >= bin[i] && !(bin[i] & k1))
{
temp -= bin[i];
cur_ans += bin[i];
}
else if(cur_ans + bin[i] < ans && !(bin[i] & k1))
{
ans = cur_ans + bin[i];
}
}
if (temp == )
{
if (cur_ans < ans)
ans = cur_ans;
}
k1*=;
}
printf("%lld", ans);
}
return ;
}
本篇博文全部原创,未经博主允许禁止转载
二进制中连续k个1-题解的更多相关文章
- 485. 找出二进制串中连续的1的个数 Max Consecutive Ones
Given a binary array, find the maximum number of consecutive 1s in this array. Example 1: Input: [1, ...
- 《程序员代码面试指南》第五章 字符串问题 去掉字符串中连续出现k 个0 的子串
题目 去掉字符串中连续出现k 个0 的子串 java代码 package com.lizhouwei.chapter5; /** * @Description: 去掉字符串中连续出现k 个0 的子串 ...
- 字符串问题:去掉字符串中连续出现 k 个 0 的子串
[题目] 给定一个字符串 str 和 一个整数 k, 如果 str 中正好有连续 k 个 ‘0’ 字符出现时,把 k 个连续的 ‘0’ 字符去除,返回处理后的字符串. [举例] str="A ...
- 字符串问题----去掉字符串中连续出现K个0的子串
去掉字符串中连续出现K个0的子串 给定一个字符串str,和一个整数k, 如果str中正好有连续K 个'0'字符出现,把连续的 k 个 '0'去掉,返回处理后的子串. [解题思路] 1. 定义两个变量, ...
- 求不小于N且二进制串包含K个1的最小的数字
给定正整数N,求一个最小正整数M(M>=N),使得M中连续1的个数不小于K. 输入格式:N K 其中N为大整数,只能进行字符串处理 首先要把N化为二进制串,考察这个二进制串的最后K位: 直接把这 ...
- C# if中连续几个条件判断
C# if中连续几个条件判断 1.if (条件表达式1 && 条件表达式2) 当条件表达式1为true时 using System; using System.Collections. ...
- 【Leetcode】寻找数串中连续最大整数和且最大长度的子串
寻找数串中连续最大整数和且最大长度的子串 输入示例: 1000 -100 200 -200 100 -100 10 90 输出结果: 1100 分析: 分治法解决问题非常方便,依然分为三种情况:a[1 ...
- [LeetCode] Minimum Number of K Consecutive Bit Flips 连续K位翻转的最小次数
In an array A containing only 0s and 1s, a K-bit flip consists of choosing a (contiguous) subarray o ...
- 字符串中连续出现最多的子串 & 字符串中最长反复子串
字符串中连续出现最多的子串 & 字符串中最长反复子串 字符串中连续出现最多的子串 & 字符串中最长反复子串,这两个问题都能够用后缀数组来表示,至于后缀数组能够參考编程珠玑P156:后缀 ...
随机推荐
- day 9~11 函数
今日内容 '''函数四个组成部分函数名:保存的是函数的地址,是调用函数的依据函数体:就是执行特定功能的代码块函数返回值:代码块执行的结果反馈函数参数:完成功能需要的条件信息1.函数的概念2.函数的定 ...
- SkylineGlobe TerraExplorer for Web 7.1.0版本 接口示例
在SkylineGlobe TerraExplorer for Web 7.1.0版本(俗称H5免插件版本)中,如何使用SGWorld接口的三维视域分析方法呢? 请参考下面的示例: 通过下面的代码大家 ...
- (poj 2502) Subway 最短路
题目链接: 题意:在一个城市里有许多地铁,现在你知道每条地铁的起点 终点与停站点的坐标,知道我们的起始坐标与终点坐标,问加上走路最快到达终点的时间是多少? 方法:求出任意两点的车速时间与步行时间,再 ...
- Ubuntu软件的安装与删除
- MYSQL 两表 排除 重复记录
MySQL之——查询重复记录.删除重复记录方法大全 - 冰河的专栏 - CSDN博客https://blog.csdn.net/l1028386804/article/details/51733585 ...
- springdata jpa 原始sql的使用
- 一分钟学会JavaMail(假)__手动滑稽
因为公司内部办公系统(OA)需要增加一个发送邮件的功能,所以学习了这个感觉比较冷门的JavaMail 1.先上成功截图 : 2.准备事项:Java Mail虽然是官方写的,但是没有集成到jdk里面 ...
- A.02.00—功能定义与唤醒—起始
第一章节主要讲的是模块普通的输入输出,精力及能力有限,仅介绍了一些较为普通的信号,另一些信号留待想了解的人自我探索. 第二章节打算介绍的是功能定义和休眠唤醒相关的内容.也是一些基础内容,对于比较少见或 ...
- epoll ET(边缘触发) LT(水平触发)
EPOLL事件有两种模型: Edge Triggered (ET) 边缘触发只有数据到来,才触发,不管缓存区中是否还有数据.Level Triggered (LT) 水平触发只要有数据都会触发. 首先 ...
- MapReduce-FileInputFormat
在运行 MapReduce 程序时,输入的文件格式包括:基于行的日志文件.二进制格式文件.数据库表等.那么,针对不同的数据类型,MapReduce 是如何读取这些数据? FileInputFormat ...