最低价格

题目概要:《哈利波特》系列书籍共5部,单买每本8元,2本一套买(各不相同为一套,下同),享5%的优惠,以此类推,3本10%,4本20%,5本25%。
要求:输入要买的书籍,求出最优购买策略,并求出最低价格。
#include<iostream>
using namespace std;

void main()
{
	double a,b;
	int n;
	cout<<"请输入要购买书籍的总数:"<<endl;
	cin>>n;

	a=n/5;
	b=n%5;
	if(b==3&&a>0)
	{
		if(a-1>0)
		{
			cout<<"最合理的购买方式为:"<<"买"<<a-1<<"整套,";
		}
		cout<<"买2套各不相同的4本"<<endl;
		cout<<"最低价为:"<<40*0.75*(a-1)+32*0.8*2<<"元"<<endl;
	}
	else
	{
		if(a>0)
		{
			cout<<"最合理的购买方式为:"<<"买"<<a<<"整套,";
		}
		if(b>0)
		{
		cout<<",买1套各不相同的"<<b<<"本"<<endl;
		}
		double c;
		if(b==2)
			c=40*a*0.75+16*0.95;
		if(b==3)
			c=40*a*0.75+24*0.9;
		if(b==4)
			c=40*a*0.75+32*0.8;

		cout<<"最低价为:"<<c<<"元"<<endl;
	}

}

思路:思路是课上大家一起总结出来的,简单来说就是一般情况下,整套来买即5部一起买最省钱。但有一种特殊情况,就是当要买8本时,不符合一般情况,而是买两套4本更便宜。

也就是说,当要买X本书时,应尽量多的买5本套装,剩下余8本时,按2套4本套装买。当然少于5本时,按各不相同的套装买最便宜。

感悟:额,昨天忘记发了,罪大了。。。买东西真是得多想想,不细想真不会发现其中的玄机,我就没发现8本的空档。还是得多发现多思考,才能有收获。

时间: 2024-10-29 19:07:08

最低价格的相关文章

算法-书的最低价格

一.实验题目: 书店针对<哈利波特>系列书籍进行促销活动,一共5卷,用编号0.1.2.3.4表示,单独一卷售价8元, 具体折扣如下所示:                               本数                  折扣                                   2                       5%                                   3                       10%     

课堂练习——计算法能够计算出读者购买一批书的最低价格。

1.题目. 书店针对<哈利波特>系列书籍进行促销活动,一共5卷,用编号0.1.2.3.4表示, 单独一卷售价8元, 具体折扣如下所示:                          本数                  折扣                          2                       5%                          3                       10%                          4  

求购买一批打折书的最低价格

设计思想: 前五本书的最低价已经计算出,每增加一本书,所花的钱就会增加 8  7.2   6  4.4或 4.4 元 如此循环下去 源代码: import java.util.Scanner; public class minMoney { public static void main(String args[]){ int booknumber=0; double money=0; Scanner in=new Scanner(System.in); System.out.print("你要

课堂练习--计算购买一批书最低价格

1.设计思想 通过找规律发现,当购买数量大于5本时,有两种情况.第一种:如果数的最后一位的值为8,则这八本按两个四本来算,剩下的按五本一划分来算最低:第二种:数的最后一位的值不为8,则将数对五求余,求商,根据余数大小选择对应的价格,用商乘每5本对应的价钱最低. 2.代码实现 1 import java.util.Scanner; 2 import java.util.InputMismatchException; 3 public class Cheicp { 4 5 public static

购买《哈利波特》系列书籍的最低价格

一.题目: 书店针对<哈利波特>系列书籍进行促销活动,一共5卷,用编号0.1.2.3.4表示,单独一卷售价8元, 具体折扣如下所示:                               本数                  折扣                                   2                       5%                                   3                       10%       

设计算法能够计算出读者购买一批书的最低价格

一.题目:      n书店针对<哈利波特>系列书籍进行促销活动,一共5卷,用编号0.1.2.3.4表示,单独一卷售价8元, 具体折扣如下所示 本数 2,折扣5%:本数 3,折扣10%:本数4 ,折扣20%:本数5,折扣25%:根据购买的卷数以及本数,会对应不同折扣规则情况.单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠. 二.解题思路: 通过对6本书.7本书.8本书.9本书的分析得到当本数为6.7.9时,最便宜的组合为5+1,5+

购买一批书的最低价格

题目: 书店针对<哈利波特>系列书籍进行促销活动,一共5卷,用编号0.1.2.3.4表示,单独一卷售价8元, 具体折扣如下所示: 本数                     折扣 2                        5% 3                       10% 4                       20% 5                       25% 根据购买的卷数以及本数,会对应不同折扣规则情况.单数一本书只会对应一个折扣规则,例如购买了两

课堂练习---最低价格买书

书店针对<哈利波特>系列书籍进行促销活动,一共5卷,用编号0.1.2.3.4表示,单独一卷售价8元, 具体折扣如下所示: 本数 折扣 2 5% 3 10% 4 20% 5 25%根据购买的卷数以及本数,会对应不同折扣规则情况.单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠.设计算法能够计算出读者购买一批书的最低价格. 思路:首先算出1到10本的最低价格, 1本 8元 2本 15.2元 按照两本的折扣 (和上一个阶段差7.2元) 3本

软件工程概论 购书最低价格问题

思路:只有8这个数特殊,3+5>4+4,其他的只要除5取余即可. 我偷了个懒,直接罗列if... #include <iostream> using namespace std; void main() { int n; int i; cout<<"请输入本数:"<<endl; cin>>n; i = n/5; if(n<5) { if(n==1) cout<<"最低价格为8元"<<