Halo

A magic place for coding

0%

CCF--打酱油问题

打酱油问题

问题描述

 小明带着N元钱去买酱油。酱油10块钱一瓶,商家进行促销,每买3瓶送1瓶,或者每买5瓶送2瓶。请问小明最多可以得到多少瓶酱油。

输入格式

输入的第一行包含一个整数N,表示小明可用于买酱油的钱数。N是10的整数倍,N不超过300。

输出格式

输出一个整数,表示小明最多可以得到多少瓶酱油。

样例输入

40

样例输出

5

样例说明

把40元分成30元和10元,分别买3瓶和1瓶,其中3瓶送1瓶,共得到5瓶。

样例输入

80

样例输出

11

样例说明

把80元分成30元和50元,分别买3瓶和5瓶,其中3瓶送1瓶,5瓶送2瓶,共得到11瓶。

解决方法

分析

通过分析题目,可以知道有四种购买的类型:

  • 当N<10的时候,无法购买
  • 当10≤N<30,购买1瓶
  • 当30≤N≤50, 购买3瓶,并赠送1瓶,共得4瓶
  • 当50≤N, 购买5瓶,并赠送2瓶,共得7瓶

因此,从第四种方法依次优先往上选择,才能尽可能多地购买到酱油。

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
using namespace std;

int main() {
int N;
cin >> N;

int num = 0;
while (N >= 50) {
N -= 50;
num += 7;
}
while (N >= 30) {
N -= 30;
num += 4;
}
while (N >= 10) {
N -= 10;
num++;
}
cout << num << endl;

return 0;
}

至此,本题讲解完毕,谢谢!

Welcome to my other publishing channels