csu 10月 月赛 A 题

Welcome to CSU OnlineJudge

Problem A: Small change

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 156  Solved: 91
[Submit][Status][Web Board]

Description

打完网赛,就到了晚饭的时间,但CSU_ACM的同学们都已经没力气出去了,这时CX建议大伙一起点餐吧,因为正是饭点,CX为了不让大家等太久,找了一个承诺20分钟送到超时要打折的外卖。但CX的RP都在网赛上用光了,果然送餐的迟到了,按规定咱们是要少给钱的。可是那些送餐员十分的狡猾,他们没有带零钱,于是乎,原价为N元的饭,由于他们的迟到可能需要降价,这些狡猾的送餐员会随机报一个数∈(1,N),如果CSU_ACM的小基友没有恰好这么多钱的话,送餐员还是按原价收取饭钱。为了CSU_ACM的最大利益,想知道最少由多少张钞票可以应对送餐员的任意要求(每张钞票的价值可为任意正整数),不论送餐员报的数字为多少总能给出相应的零钱。

Input

多组数据(不超过20组),输入到文件结束。

输入为CSU_ACM的小基友们点餐的总价N.(1<=N<=100000)

Output

输出为CSU_ACM的小基友们准备的零钱的最少张数。每个测试数据一行。

Sample Input

1 2 5

Sample Output

1 2 3

HINT

 CSU_ZZY

 这是本人A过的最短的代码!!发一个,纪念一下!

1 #include<cstdio>
2 using namespace std;
3 int main()
4 {
5     for(int cnt=0,n; scanf("%d",&n); printf("%d
",cnt))
6     {
7         while(n>0)n>>=1,cnt++;
8     }
9 }
View Code
原文地址:https://www.cnblogs.com/yours1103/p/3349462.html