洛谷 P2320 [HNOI2006]鬼谷子的钱袋 思维+二进制

news/2024/11/24 5:01:31/

https://www.luogu.org/problem/P2320

题目描述
鬼谷子非常聪明,正因为这样,他非常繁忙,经常有各诸侯车的特派员前来向他咨询时政。

有一天,他在咸阳游历的时候,朋友告诉他在咸阳最大的拍卖行(聚宝商行)将要举行一场拍卖会,其中有一件宝物引起了他极大的兴趣,那就是无字天书。

但是,他的行程安排得很满,他已经买好了去邯郸的长途马车票,不巧的是出发时间是在拍卖会快要结束的时候。于是,他决定事先做好准备,将自己的金币数好并用一个个的小钱袋装好,以便在他现有金币的支付能力下,任何数目的金币他都能用这些封闭好的小钱的组合来付账。

鬼谷子也是一个非常节俭的人,他想方设法使自己在满足上述要求的前提下,所用的钱袋数最少,并且不有两个钱袋装有相同的大于1的金币数。假设他有m个金币,你能猜到他会用多少个钱袋,并且每个钱袋装多少个金币吗?

输入格式
包含一个整数,表示鬼谷子现有的总的金币数目m。其中,1≤m ≤1000000000。

输出格式
两行,第一行一个整数h,表示所用钱袋个数

第二行表示每个钱袋所装的金币个数,由小到大输出,空格隔开

思路一:联想到多重背包的二进制优化,但是可能有重复出现的数字,但是这种情况仅可能出现一对数,所以一个加 1 1 1,一个减 1 1 1就好了。

#include<bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;int n,len;
int a[1005];int main()
{scanf("%d",&n);int i=1;while(i<=n){a[len++]=i;n-=i;i<<=1;}if(n){if((n&(n-1))==0){a[len-1]--;a[len++]=n+1;}elsea[len++]=n;}sort(a,a+len);printf("%d\n",len);for(int i=0;i<len;i++)printf("%d ",a[i]);return 0;
}

思路二:如果 [ 1 , n / 2 ] [1,n/2] [1,n/2]的数可以表示出来,那么 [ n / 2 + 1 , n ] [n/2+1,n] [n/2+1,n]的数只需要加上 n / 2 n/2 n/2就可以了。

#include<bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;int n,len;
int a[1005];int main()
{scanf("%d",&n);while(n){a[len++]=(n+1)>>1;n>>=1;}printf("%d\n",len);for(int i=len-1;i>=0;i--)printf("%d ",a[i]);return 0;
}

http://www.ppmy.cn/news/139338.html

相关文章

哈理工OJ P2320:OX

题目链接&#xff1a;OX 题意 &#xff1a;给出一个3X3的黑白棋棋盘&#xff0c;棋盘上有若干黑白子&#xff0c;再给出下一个下的人&#xff0c;问下一个下的人能否赢 分析&#xff1a;考虑到只有39种状态&#xff0c;故用一个数保存目前棋盘的状态&#xff0c;记为value&…

Citrix Receiver 错误编号2320

Citrix Receiver 错误编号2320 安装完citrix receiver后点击快捷方式启动应用&#xff0c;出现以上报错解决方法&#xff1a;1 打开注册表 搜索 allowhotkey2 删除allowhotkey键值 注意&#xff0c;删除前请备份该键值&#xff01; 转载于:https://blog.51cto.com/141686/21210…

【实战】烂泥:关于佳能IR2320N网络打印机的安装域使用

第一步&#xff1a;首先要为该机器设置一个IP地址&#xff0c;具体方法是&#xff1a;附加管理→系统管理→网络管理→IPv4→IP地址&#xff0c;输入相应的IP地址&#xff0c;子网掩码&#xff0c;默认网关。如果你要查看该机的MAC地址的话&#xff0c;那你也可以在此查看呢。选…

AHT20温湿度传感器STM32-I2C驱动,替代DHT11/DHT12/AM2320/SHT20/SHT30,IIC代码兼容AHT10/15-MEMS温湿度传感器

AHT20是国内奥松生成的I2C接口的MEMS温湿度传感器&#xff0c;ADC位数为20Bit&#xff0c;具有体积小、精度高、成本低等优点。相较于AHT10&#xff0c;最显著的变化是体积由 5*4*1.6mm&#xff0c;缩小到 3*3*1.0mm。相对湿度精度 RH2%&#xff0c;温度精度 T0.3C。相对湿度测…

ZOJ 2320 Cracking' RSA

其次布尔线性方程组&#xff0c;高斯消元。这道题目的关键部分是看的神牛watashi的思路。另附上watashi的思路 我把他的java模板翻译成了C的了。。。存起来以后当模板用。。。a[i][j]表示第i个数含有质数p[j]的个数&#xff0c;奇数个的话就是true&#xff0c;偶数个就是false。…

STM32 AM2320 温湿度万年历 微信小程序显示及控制

功能描述: 使用STM32F103R8T6&#xff0c;红外遥控器&#xff0c;数码管&#xff0c;串口&#xff0c;预留ADC&#xff08;4~20mA输入、0~10V输入&#xff09;、485、以太网、WiFi、SD卡、USB_OTG等功能。单总线的方式采集温湿度&#xff08;因整个系统时序要求&#xff0c;所…

STM32单片机软件模拟I2C读取AM2320温湿度传感器数据

STM32单片机使用软件模拟IIC读取AM2320温湿度传感器的数据并显示在0.96寸OLED屏上。 我用的单片机是STM32F103C8T6&#xff0c;程序用的是ST标准库写的。 STM32使用硬件I2C读取SHTC3温湿度传感器&#xff1a;https://blog.zeruns.tech/archives/692.html STM32单片机读取AHT1…

bzoj2320: 最多重复子串

2320: 最多重复子串 Time Limit: 40 Sec Memory Limit: 128 MBSubmit: 246 Solved: 66[Submit][Status][Discuss] Description 一个字符串P的重复数定义为最大的整数R&#xff0c;使得P可以分为R段连续且相同的子串。比方说&#xff0c;“ababab”的重复数为3&#xff0c;“a…