本文主要是介绍c++,ccf,2017年9月,打酱油试题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题描述
小明带着 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瓶。
题目思路:总的思想是,如果可以买5瓶,就先买5瓶送2瓶那种,如40元就是 30+10,60元就是 50+10 ,110元就是50+50+10...,以此类推。读者可以自己计算,如果大于50元,先买每消费30元送一瓶那种,一定比买5瓶送两瓶的少!!
#include <iostream>
using namespace std;
int main(){int N;cin>> N ;if(N<30){ // 先判断是否小于30,小于就买不了优惠cout<< N/10;}else if(N<50){//判断是否大于50,不是就可以买3瓶送一瓶,注该N<50 是if-else语句,前面一个if已经保证N>30 了,所以只要N<50就等价30<N<50cout<<(N-30)/10+4;}else{ // 按5瓶先买,3瓶后面(N/50)*7买5瓶送两瓶,(( N -(N/50)*50))/30 *4买3瓶送1瓶,(( N-(N/50)*50 )/30) *30 )/10剩下钱买1瓶cout<< (N/50)*7+(( N -(N/50)*50))/30 *4 + (N-(N/50)*50 - (( N-(N/50)*50 )/30) *30 )/10 ;}return 0;
}
这篇关于c++,ccf,2017年9月,打酱油试题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!