活动“兑 换” 问题

问题描述:

                一个叫做“嘻哈华”的人购买了 m 瓶饮料,卖家告诉他够 n(n>0, 且 n为整数) 个瓶盖就可兑换一瓶

                饮料,并且兑换次数不限。现在问他喝了多少瓶饮料(不扔也不借)?

源代码:

#include <stdio.h>

int main() {
	int m, n, s;
	scanf("%d%d", &m, &n);
	s = m + (m-1) / (n-1);    //  最多能喝多少瓶
	printf("%d\n", s);
	return 0;
}
//                     饮料兑换问题
//
//     创作者:嘻哈华 @版权所有,翻版必究。若想使用请下载并导入 wyh.h 这个包。
//
//    根据(购买数,兑换数)推导出,在购买 m (购买数)瓶饮料的情况下,
//    够 n (兑换数)个瓶盖(空瓶子)就可兑换一瓶饮料。最多兑换数就相当
//    于 (m-1)/(n-1)。 (购买数-1)/(兑换数-1),这个公式的取值结果是:
//    取小于这个值得最大整数。

活动兑换问题进阶版:

        问题描述:现在购买 m 瓶饮料,4瓶盖 ——>1瓶,2空瓶 ——> 1瓶。问:最多喝了多少瓶饮料?

#include <stdio.h>

int main() {
	int m, n=5, s=5;
	scanf("%d", &m);
	while (m>=4 || n>=2) {
		int t = (m-1) / 3;
		if (m >= 4) {
			s += t;
			m -= 3*t;
			n += t;
		}
		if (n >= 2) {
			s += n-1;
			m += n-1;
			n = 1;
		}
	}
	printf("%d\n", s);
	return 0;
}

注意:以上内容为原创,若想使用,请下载<wyh.h>这个包,然后导入即可。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值