C. p-binary(二进制位)

news2024/9/29 7:15:52

Problem - 1225C - Codeforces

 

Vasya会看中任何数字,只要它是2的整数次方。另一方面,Petya非常保守,只喜欢单一的整数p(可以是正数、负数或零)。为了结合他们的口味,他们发明了2x+p形式的p-二进制数,其中x是一个非负整数。

例如,一些-9-二进制("减九 "二进制)的数字是。-8(减八),7和1015(-8=20-9,7=24-9,1015=210-9)。

男孩们现在用p-二进制数来表示一切。他们现在面临一个问题:给定一个正整数n,他们需要最小数量的p-二进制数(不一定是不同的)来表示n的和?有可能完全无法表示。帮助他们解决这个问题。

例如,如果p=0,我们可以把7表示为20+21+22。

而如果p=9,我们可以把7表示为一个数字(24-9)。

请注意,负的p-二进制数字是允许出现在总和中的(见注释部分的例子)。

输入
唯一一行包含两个整数n和p(1≤n≤109,-1000≤p≤1000)。

输出
如果不可能将n表示为任何数量的p二进制数之和,则打印一个整数-1。否则,打印最小的可能的和数。

例子
inputCopy
24 0
outputCopy
2
输入复制
24 1
输出拷贝
3
输入复制
24 -1
输出拷贝
4
输入复制
4 -7
输出拷贝
2
输入复制
1 1
输出拷贝
-1
注意
0-二进制数只是普通的二进制幂,因此在第一个例子中,我们可以表示24=(24+0)+(23+0)。

在第二个例子中,我们可以表示24=(24+1)+(22+1)+(20+1)。

在第三个例子中,我们可以表示24=(24-1)+(22-1)+(22-1)+(22-1)。请注意,重复的总和是允许的。

在第四个例子中,我们可以表示4=(24-7)+(21-7)。注意第二个和是负数,这是允许的。

在第五个例子中,不可能表示。

题解:

最终答案应该是k个二进制数+k*p = n

我们转换一下形式就变成了 k个二进制数 = n - k*p

我们直接从一开始枚举k,看剩下的x = n - k*p是否能由几个二进制数组成

首先x肯定要大于k,因为二进制数最小为2^0 = 1,所以x >= k

其次x中二进制位1的数目应该小于k,因为如果大于k,k个二进制数是无法组成的

如果可以组成直接break

枚举到x < 0时要break,因为剩下的数肯定也不行

#include<iostream>
#include<algorithm>
#include<string>
#include<queue>
#include<vector>
#include<map>
#include<cstring>
#include<cmath>
#include<set>
using namespace std;
#define int long long
typedef pair<int,int> PII;
int check(int s)
{
	int cnt = 0;
	while(s)
	{
		if(s%2)
		cnt++;
		s/=2;
	}
	return cnt;
}
void solve()
{
	int ans = 1e18;
	int n,p;
	cin >>n >> p;
	for(int i = 1;;i++)
	{
		int t = n - p*i;
		if(t >= i&&check(t) <= i)
		{
			ans = i;
			break;
		}
		if(t < 0)
		break;
	}
	if(ans == 1e18)
	cout<<-1;
	else
	cout<<ans; 
}
//cbc cbb
//7 3 1
//6 5 4 
signed main(){
//	ios::sync_with_stdio(false);
//	cin.tie(0);
//	cout.tie(0);
	int t = 1;
//	cin >> t;
    while(t--)
	{

		solve();
	} 
}
//5
//2 4 6 8 10 7 9 5 3 1
//1 3 5 7 9 6 8 4 2
//2 4 1 3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/129014.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

jmeter接口测试之导入测试用例/get请求中Url存在参数(工作日记2)

导入接口用例进行接口测试 以运营中心测试计划中的企业菜单管理为例 【前提条件】 1、有接口数据 2、有接口用例 我们需要把接口测试用例转换为CSV格式步骤如下&#xff1a; 右键选择打开方式为Notepad 需要将文件设置一下编码 文件留着备用 【步骤】 1、新建一个企业…

前端基础之PS和相关基础知识总结

PS安装&#xff1a; 淘宝 PS简介 面板简介&#xff08;菜单栏、工具栏、辅助面板&#xff09; 图片格式&#xff1a; jpgjpeg&#xff08;色彩丰富的图片&#xff09;png&#xff08;半透明图片&#xff09;gif&#xff08;网页动态图&#xff09;psd&#xff08;ps设计源文…

android java udp广播 用于局域网搜索扫描设备。

DatagramSocket socket new DatagramSocket();//设置接收等待时长socket.setSoTimeout(LanCommConfig.RECEIVE_TIME_OUT);byte[] sendData new byte[1024];//使用广播形式&#xff08;目标地址设为255.255.255.255&#xff09;的udp数据包DatagramPacket sendPacket new Dat…

STC15单片机+DS18B20+LCD1602+PCF8574转IIC接口温度显示

STC15单片机+DS18B20+LCD1602+PCF8574转IIC接口温度显示 📺显示效果 LCD1602 IIC接口 ✨本示例基于自制的STC开发板,主控采用的:IAP15W4K61S4相关篇《【PCB开源分享】STC/IAP15W4K61S4开发板》《【开源分享】自制STC15W408AS开发板》🌼接线说明 🌿CD1602+PCF8574转IIC接…

stlink下载调试器使用说明(STM32采用stlink下载程序)

stlink能干什么&#xff1f; 最基本的功能&#xff1a;下载程序。 一般STM32支持ISP串口下载&#xff0c;也支持stlink、jlink等下载器下载 。 使用stlink、jlink下载要比串口方便很多&#xff0c;在keil里直接点击下载就行了&#xff0c;不需要去选择hex文件&#xff0c;速度…

你可能还不知道 golang 的高效编码细节

xdm&#xff0c;我们都知道 golang 是天生的高并发&#xff0c;高效的编译型语言 可我们也都可知道&#xff0c;工具再好&#xff0c;用法不对&#xff0c;全都白费&#xff0c;我们来举 2 个常用路径来感受一下 struct 和 map 用谁呢&#xff1f; 计算量很小的时候&#xf…

特斯拉第10000桩落成,百度地图送10000名充电免单!

「导语」 为庆祝特斯拉在中国大陆落成第10000个超级充电桩&#xff0c;百度地图推出特斯拉车主专属权益。车主们通过百度地图APP&#xff0c;即可实时获取超级充电桩空闲信息、一键规划专属充电路线。12.28-1.2期间&#xff0c;更有10000份充电免单福利限时放送。 在汽车电动…

Linux环境开机自启java应用

Linux环境设置开机自启java应用&#xff08;Linux定时任务&#xff09; crontab是Unix和Linux用于设置需要周期性被执行的指令&#xff0c;是Linux服务器很常用的技术&#xff0c;很多任务都会设置在crontab循环执行。 crontab &#xff1a; 提供给用户控制任务计划的命令&…

WebDAV之葫芦儿·派盘+File Manager

File Manager 支持WebDAV方式连接葫芦儿派盘。 手机文件太多,空间不足、隐藏文件多、文件清理不干净?推荐您一个功能强大的文件管理器,可以让你对手机中的各类文件进行管理,支持快速移动、复制粘贴、压缩解压等等。同时还能对已经安装的程序进行卸载,自动识别手机中的AP…

啥牌子的蓝牙耳机音质好?2023公认音质最好的蓝牙耳机

音乐是有魔力的&#xff0c;繁杂的工作和琐碎的生活&#xff0c;使得大多数人焦虑不安&#xff0c;音乐可以令人放松&#xff0c;蓝牙耳机越多越多&#xff0c;真不知道怎么挑好&#xff0c;品牌成百上千&#xff0c;款式就更不用说了&#xff0c;下面笔者专门整理了一期音质表…

【小西】优化生日品同步网易严选功能,使其支持多SPU对多SKU关系

目录前言思路代码实现实体ThemeActivityGift&#xff1a;spuId由 String类型变为JSONArrayThemeActivityGiftServiceImpl改造handleYxGiftByOperation&#xff1a;保存的是严选的生日品checkSpuIds&#xff1a;校验SPU有效性checkSpuIdExist&#xff1a;校验单个spuId是否存在c…

C语言函数栈帧的创建和销毁

前期学习的时候&#xff0c;我们可能有很多困惑&#xff0c;比如&#xff1a; 局部变量是怎么创建的&#xff1f; 为什么局部变量的值是随机值&#xff1f; 函数是怎么传参的&#xff1f;传参的顺序是怎样的&#xff1f; 形参和实参是什么关系&#xff1f; 函数调用是怎么…

分享丨品牌零售行业三大实践解读,全面搭建并落地数字化运营体系

以下内容来自神策数据创始人 & CEO 桑文锋关于数据驱动零售品牌业务增长的相关分享。点击文末“阅读原文”&#xff0c;了解神策品牌零售行业完整版解决方案。神策从 2020 年深入品牌零售领域&#xff0c;一路走来跌跌撞撞&#xff0c;不过思路越来越清晰&#xff0c;对该领…

Echarts:饼图默认高亮和选中(突出并高亮)/添加单击事件/X轴字符标签换行处理

饼图默认高亮: // 我这里实现的是饼图// 获取 this.sysfbChart this.$echarts.init(document.getElementById(sysfb))// 默认高亮第一个 // highlight:突出 this.sysfbChart.dispatchAction({type: highlight,seriesIndex: 0,dataIndex: 0}); 效果图: 饼图选中(突出并高亮):…

为什么自学 Python 看不进去?

如果刚开始学习python&#xff0c;没看懂&#xff0c;那就多看几次就会了。看不进去很正常&#xff0c;这个过程会很乏味&#xff0c;但是对于你建立牢固的编程思维是必须的。会有看不进去的这个阶段 python学习的秘诀在于对技术了解的广度和对数据结构研究的深度&#xff0c;不…

2022“易观之星”奖项公布,聚焦数字经济,助力数智创新

12月29日&#xff0c;“易观之星”颁奖典礼线上举办&#xff0c;重磅颁出2022“易观之星”奖项。 2022“易观之星”设置数字产品、数字企业2个系列共7大奖项&#xff0c;覆盖金融、品牌零售、汽车出行、文化消费等领域&#xff0c;挖掘和表彰各领域表现卓越的数字产品、数字企业…

【go语言之http模型reactor】

go语言之http模型reactor示例gnet.ServeinitListenerserveactivateEventLoopspolling前面说了go自带的原生netpoll模型&#xff0c;大致的流程就是每一个新的连接都会开启一个goroutine去处理&#xff0c;这样的处理的过程简单&#xff0c;高效&#xff0c;充分利用了go的底层的…

在 K8S 中测试环境中搭建 mongodb

1.可在服务器上面创建 https://kubernetes.io/docs/home/ #k8s官网 搜索Deployment 第一个就是例子 vi rs-mongodb.yaml apiVersion: apps/v1 kind: Deployment #资源类型 metadata:namespace: klvchenname: mongodblabels:app: mongodb spec:replicas: 1selector:mat…

STM32CubeMX学习笔记(50)——USB接口使用(DFU固件升级)

一、USB简介 USB&#xff08;Universal Serial BUS&#xff09;通用串行总线&#xff0c;是一个外部总线标准&#xff0c;用于规范电脑与外部设备的连接和通讯。是应用在 PC 领域的接口技术。USB 接口支持设备的即插即用和热插拔功能。USB 是在 1994 年底由英特尔、康柏、IBM、…

量子+智慧交通!玻色量子中标北京城市轨道交通项目

​2022年11月&#xff0c;玻色量子与北京交通大学国家重点实验室组成联合体&#xff0c;接受北京城市轨道交通咨询有限公司委托&#xff0c;三方共同探索和实施量子计算在智慧地铁中的应用场景研究工作。 北京城市轨道交通咨询有限公司 此次科研合作&#xff0c;玻色量子将充分…