问题描述
小明带着
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<50
cout<<(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;
}