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<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;
} 


猜你喜欢

转载自blog.csdn.net/song91425/article/details/78547631