(c语言)和与积的运算第一篇

本文探讨了在特定条件下如何最节省成本为m个学生购买汽水的问题。商家提供了购买和兑换汽水的规则,包括3个空瓶换1瓶和20个空瓶换7瓶的选项。通过分析不同人数情况下的花费,如20人时每人0.91元,3人时每人0.93元,得出了一种最省钱的算法:将学生按20人一组和3人一组划分,结合商家规则购买和兑换。最后给出了C++代码实现这一算法,计算最少需要的费用。
摘要由CSDN通过智能技术生成

喝汽水

某学院有m个学生参加南湖春游,休息时喝汽水。南湖商家公告:
(1)买1瓶汽水定价1.40元,喝1瓶汽水(瓶不带走)1元
(2)为节约资源,规定3个空瓶可换回1瓶汽水,或20个空瓶可换回7瓶汽水
(3)为方便顾客,可先借后还。例如借1瓶汽水还3个空瓶,或借7瓶汽水还20个空瓶。
问m个学生每人喝1瓶汽水(瓶不带走),至少需要多少元?
输入正整数m,输出至少需要多少元(精确到小数点后第2位)
1.求解思路
注意到春游喝汽水无需带走空瓶,根据商家的规定作以下比较:
(1)如果人数为20人,买13瓶汽水,借7瓶汽水,饮完20瓶汽水后还20个空瓶(即相当
于换回7瓶汽水还给商家),两清。此时每人花费为:
13/201.40=0.91元
(2)如果人数为3人,买2瓶汽水,借1瓶汽水,饮完3瓶汽水后还3个空瓶(即相当于换
回1瓶汽水还给商家),两清。此时每人花费为
2/3
1.40=0.93元
(3)如果只有2人或1人,每人喝1瓶汽水(瓶不带走),此时每人花费1元。
(4)注意到0.91<0.93<1,因而有以下的最省钱算法:
1)把m人分为x=m/20个大组,每组20人。每组买13瓶汽水(借7瓶汽水),饮完后还20空瓶,两清。
2)剩下t=m-x20人,分为y=3个小组,每组3人。每组买2瓶汽水(借1瓶汽水),饮完3个空瓶,两清。
3)剩下t=m-x
20-y*3人,每人花1元喝1瓶。

*该算法得所花费用最低为:
(13x+2y)1.40+t元

代码:

#include<stdio.h>
int main()
{
	long n,m,y,x;
	scanf("%ld",&m);
	x=m/20;
	t=m-x*20;
	y=t/3;
	t=m-20*x-3*y;
	printf("%ld\n",(13*m+3*y)*1.40+t);
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落春只在无意间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值