OJ题解



  这是一道OJ上的题目:小慧过生日,小明(小明真忙)要买鲜花送她。每枝红玫瑰(过生日送玫瑰,老贺不懂合适不合适)5元,满5支送1枝,满20枝送5枝。小明一共有n(n>10)元钱,最多能买到多少?
  样例输入:135
  样例输出:33

  不少同学做不出来。今天一位同学问我,那就分析一下。
  其中看不懂这个规则的同学不少,快找人需要送花的人,享受一下购物优惠吧。
  以样例说事,33枝是怎么来的?
  5元一支,135元能买27支。他这样买:先买20支,这时赠5支,再买7支,还能再送1支,这样就能达到33支了。
  于是,先尽可能享受买20赠5的优惠,再看享受买5赠1的优惠。这是贪心法的思维。
  写出下面的代码:

#include<iostream>
using namespace std;
int main()
{
    int money, n, z1, z2;
    cin>>money;
    n=money/5;    //实际能买的玫瑰
    z1=n/20*5;    //买够20就能送5支
    z2=(n-(n/20)*20)/5;  //不够买20赠5的,享受买5赠1的
    cout<<n+z1+z2<<endl;
    return 0;
}

  分享在QQ群,不少同学大呼用了不少if语句嵌套着做,错误提交了很多次,不想就几个表达式搞定了。
  其实,思路顺了再动手。不要把问题搞复杂了。

时间: 2024-07-30 14:04:39

OJ题解的相关文章

2014秋C++ OJ题解:母牛的故事

课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课程主页中查看.  Description 有一头母牛,它每年年初生一头小母牛.每头小母牛从第四个年头开始,每年年初也生一头小母牛.请编程实现在第n年的时候,共有多少头母牛?Input 输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0< n< 55),n的含义如题目中描述. n=0

code chef:Cool Guys题解

All submissions for this problem are available. Given an integer N. Integers A and B are chosen randomly in the range [1..N]. Calculate the probability that the Greatest Common Divisor(GCD) of A and B equals to B. Input The first line of the input co

c语言-OJ的输入输出 C语言的输入输出多组测试数据

问题描述 OJ的输入输出 C语言的输入输出多组测试数据 请问OJ测试代码时是如何输入输出的?C语言如何实现多组数据的输出?比如这道题 "水仙花数"是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3. 现在要求输出所有在m和n范围内的水仙花数. Input 输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999). Output 对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等

字母大小写转换 算法-OJ上一道字母大小写转换的题

问题描述 OJ上一道字母大小写转换的题 OJ上的一道题,题目是:cAPS lOCK我写的代码链接:http://codepad.org/JrJrOGxQ 自己在编译器上编译时 没发现有什么错,但是在OJ上提交时出现:wrong answer on test 6不知道哪里错了 解决方案 大小写字母转换字母大小写转换字母大小写转换 解决方案二: 估计是不是你没有考虑对数字和其它字符的判断,导致没有通过测试用例. 我运行了你的程序,的确,对于如下情况,你的程序都没有问题:只有一个小写字母,比如z全部大

2007淘宝UED招聘题解(前端开发部分)

史上最酷的招聘已经结束,效果还是不错的.我们发现了很多颇有潜力的人才.他们的一些聘题的解法也开拓了我们的视野,让我们收获良多.感谢所有参与招聘及所有关注淘宝UED博客的朋友. 以下是该次招聘前端开发工程师的聘题解答: 小贤是一条可爱的小狗(Dog),它的叫声很好听(wow),每次看到主人的时候就会乖乖叫一声(yelp). 从这段描述可以得到以下对象: function Dog() { this.wow = function() { alert('Wow'); } this.yelp = func

Codeforces B. Taxi 算法题解

简单总结题意: 有一个数组,数组中的数值不会大于4,即只能是1,2,3,4,要把这些数值装进一个容量最大为4的容器里面,使得所用到这样的容器的个数最小. 经测试数据很大,会有10万个数据,所以这里我并不用排序数据,而是使用counting sort的思想,根据特定的数据优化,使得题解时间复杂度为O(n). 更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/sjjg/ 程序如下: #include <iostream>

code chef:Divide the Tangerine 橘子分块算法题解

Once Chef decided to divide the tangerine into several parts. At first, he numbered tangerine's segments from1 to n in the clockwise order starting from some segment. Then he intended to divide the fruit into several parts. In order to do it he plann

SPOJ 查找下一个回文Palindrome 算法题解

给出一个数值,well,其实不是数值了,而是一大串数字, 比如 98237482340328490328490324893024,非常长的数字. 找出下一个Palindrome,这个Palindrome在数值上要比当前数值大(不能等于). 如: 9 9 9 9->1 0 0 0 1 1 2 3 4 5 ->1 2 4 2 1 本算法时间效率是O(n),其中n是指数值的位数,不是数值,比如123456789,只有9位,那么本算法接近常数: 更多精彩内容:http://www.bianceng.c

code chef:Counting Matrices题解

题目:给定一个数值,找出2*2矩阵的对角和等于N(N<2500)和行列式大于0的个数. 这里是考数学知识了,程序不难,不过要精确计算好却也不容易. 最原始的程序,但是会超时: void CountingMatrices() { int T = 0, N = 0; cin>>T; while (T--) { cin>>N; long long ans = 0; for (int i = 1; i < N; i++) { int a = i, b = N-i; for (i