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语句嵌套着做,错误提交了很多次,不想就几个表达式搞定了。
  其实,思路顺了再动手。不要把问题搞复杂了。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迂者-贺利坚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值