ZCMU-校赛C-1778
来源:互联网 发布:网络安全产品 编辑:程序博客网 时间:2024/05/01 05:20
1778: 分钱哪
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 241 Solved: 52
[Submit][Status][Web Board]
Description
生活在杭州,大家是不是习惯了出门只带一只手机就好啦,无论是大商场还是街边小摊都能用上支付宝,不得不说真是方便呀,知识改变命运,科技改变生活,代码改变世界,每当放假回家,我就回到了没有支付宝的地方了,然后,就要使用人民币啦,麻烦的是大部分情况下是要找零,为了不找零,于是我决定事先做好准备,我把钱数好,然后放在一个个钱袋里面,以便在我现有的支付能力下,任何数目的钱,我都能够使用我事先准备好的小钱进行支付。当然,我很穷所以我想用最少的钱袋来实现这个愿望,并且不存在两个钱袋中装有相同的大于1的钱数。假设我有m个1元硬币,你能猜到我会用多少个钱袋?
Input
第一行T(T<=1000000),接下来一个整数,表示我现有的总的硬币数目m,其中,1≤m ≤1000000000
Output
Case #x: y,x表示测试编号从1开始,y一个整数表示答案
Sample Input
2
3
4
Sample Output
Case #1: 2
Case #2: 3
【解析】
这道题刚开始做的时候就知道是个规律题,队友一直在找规律,找出一个规律来不过那个时间复杂度也挺高的,
所以还是需要再找,比完之后问了别人才知道,这个其实是这样子的,比如你有2块钱,你放几个袋子能凑上1,2
肯定需要2个袋子,你第二个袋子放2的话,你有3个硬币,你只需要2个袋子就可以凑出1,2,3了,之后我们有四个
硬币了,我们需要几个袋子?答案是3个,第一个袋子放1,第2个袋子放2,第三个袋子放4,这样的话发现4,5,6,7
全部凑出来了,一次类推8个硬币需要4个袋子,可以凑到15为止,所以我们就能发现规律所在了。
#include<iostream>#include<string>#include<cstdio>using namespace std;int main(){ int n,m,p=0; scanf("%d",&n); while(n--) { int count1=0; p++; scanf("%d",&m); while(m!=0) { m=m/2; count1++; } printf("Case #%d: %d\n",p,count1); } return 0;}
0 0
- ZCMU-校赛C-1778
- ZCMU----1778
- ZCMU-Problem C - Sumsets
- ZCMU—C
- ZCMU—1778
- ZCMU-校赛A-1776
- ZCMU-校赛B-1777
- ZCMU-校赛D-1779
- ZCMU-校赛E-1780
- zcmu-1657
- zcmu-1685
- ZCMU----1776
- ZCMU----1777
- ZCMU----1779
- ZCMU-1731
- ZCMU-1658
- ZCMU-1654
- ZCMU-1132
- 欢迎使用CSDN-markdown编辑器
- 获得屏幕相关的辅助类
- net-snmp-5.7.3 移植
- Java 中最常见的五个错误
- Hibernate ehcache配置二级缓存及说明
- ZCMU-校赛C-1778
- 初中物理压强、浮力知识点归纳
- Git常用指令,留作参考
- Maven 发布jar包到本地库
- Apache+Tomcat 同一IP多域名多网站配置
- 使用matlab如何根据循环变量对文件进行命名
- 深度神经网络的理解和实践例子,很好。
- matlab 2014
- 安卓开发将打包好的Apk放到iis服务上进行下载及更新