CDOJ 1264 人民币的构造 区间问题+数论
来源:互联网 发布:手机截图软件 编辑:程序博客网 时间:2024/04/25 13:57
人民币的构造
Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)
Submit Status
我们都知道人民币的面值是1、2、5、10,为什么是这个数值呢,我们分析了下发现,从1−10的每个数字都可以由每种面值选出至多一张通过加法和减法(找钱)来构成,(比如:1+2=3,5−1=4,5+1=6,5+2=7,1+2+5=8,10−1=9)
但是实际上,我们只需要1、2、7三种面值就可以组成1−10的每一个数字了
(1+2=3,7−1−2=4,7−2=5,7−1=6,7+1=8,7+2=9,7+1+2=10)
那么现在问题来了,给一个数n,请问最少需要多少种不同的面值就可以构成从1−n的所有数字,注意在构成每一个数字时同种面值不能超过1张。
Input
一个数字n(1<=n<=100000)
Output
一个数字,代表最少需要多少种不同的面值可以构成从1−n的所有数字。
Sample input and output
Sample Input Sample Output
10
3
Source
第七届ACM趣味程序设计竞赛第三场(正式赛)
;
假设当前能取到1-K区间,,加入一个数A后(A>K),,能取到的数的区间为[A-K,A+K],因为A的量是不定的,为了尽量右移,所以A-K=K+1,所以A=2*K+1,则最右端点A+K=3*K+1,,即能取到【1,3*K+1】;
#include<iostream>#include<cstdio>#include<algorithm>using namespace std;int a[10005];int main(){ a[1]=1; for(int i=2;i<=12;i++) a[i]=3*a[i-1]+1; int n; while(~scanf("%d",&n)) { for(int i=1;i<=12;i++) if(n<=a[i]) { cout<<i<<endl; break; } } return 0;}
0 0
- CDOJ 1264 人民币的构造 区间问题+数论
- UESTC 1264 人民币的构造 数论
- UESTC 1264-人民币的构造
- UESTC 1264 人民币的构造
- UESTC - 1264:人民币的构造【规律】
- 人民币的构造
- uestc 人民币的构造 1264 (打表)
- UESTC--1264--人民币的构造(数学规律)
- cdoj 1131 区间dp
- cdoj 1131 男神的礼物 区间dp
- CDOJ 1321柱爷的恋爱 (区间dp)
- 51nod 1434 数论区间LCM问题
- 人民币大小写转换的问题
- 【数论】闭区间上连续函数的性质
- 人民币问题
- 人民币问题
- 人民币问题
- 数论问题的举例
- listview控件的使用(1)------最简单的listview的使用
- 如何处理海量数据
- hdu 5597(欧拉,找规律)
- avalon中数组所具备的方法与变量
- 【java基础】关于java使用unicode编码及java编码解码测试数据
- CDOJ 1264 人民币的构造 区间问题+数论
- 通过 NavigationView 创建导航抽屉
- 计算机经典书籍2
- 使用缓存Memcache存储更新微信access token
- leetcode Count of Smaller Numbers After Self
- 把数据从mysql导入到hdfs中
- Some Notes About Modules
- Krisch边缘检测算子
- git的下载与安装步骤(win10系统)