弟弟10•喝汽水问题

题目

在这里插入图片描述

代码

int main()
{
	int money = 0;
	int total = 0;
	int empty = 0;
	scanf("%d", &money);
	total = money;
	empty = money;
	while(empty>1)
	{
		total += empty/2;
		empty = empty/2+empty%2;
	}
    printf("total = %d\n", total);
	return 0;
}

讲解

❤️定义变量并初始化【money是给的钱,total是最终喝的汽水数,empty是空瓶子数】。

❤️一开始有多少钱就买了几瓶汽水,喝掉后就都是空瓶子了,即total = money; empty = money;

❤️关于空瓶子可以分两种情况:

  1. 空瓶子数可以被2整除,可以直接换汽水,这些汽水喝完后剩下的空瓶子还能再换汽水,因此需要循环。total可以增加,即total += empty/2;
  2. 空瓶子数不可以被2整除,这个情况还可以细分为两种情况。 一种empty/2是够两个,可以换汽水,但会有剩下的空瓶子,剩下的空瓶子可以 和 新换的汽水喝完后的空瓶子加起来 再拿去换; 另一种empty%2是不够两个,换不了汽水。这两种小情况可以合并为empty = empty/2+empty%2;。【/是抹掉小数;%是只留小数,即取余】

❤️关于循环条件while(empty>1)。给的钱是一次就确定的,用空瓶子换汽水才是可以进入循环的。

  1. 【空瓶子数刚好可以被2整除】如果有4个空瓶子,那么empty = empty/2+empty%2 = 4/2 + 4%2 = 2 + 0 = 2,可以换2瓶汽水,没有剩下的空瓶子。
  2. 【空瓶子数不能被2整除,但够,有剩下的空瓶子】如果有5个空瓶子,那么可以换5/2 = 2瓶汽水。 empty = empty/2+empty%2 = 5/2 + 5%2 = 2 + 1 = 3,其中的2是新换的汽水喝完后剩下的瓶子,1是最开始不能被2整除剩下的瓶子。
  3. 【不够两个】,进不了循环。

❤️打印结果。

运行结果

在这里插入图片描述

加油🎉

我们不得不饮食、睡眠、游玩、恋爱,也就是说,我们不得不接触生活中最甜蜜的事情,不过我们必须不屈服于这些事物。
你又向你的目标迈进了哦!

❤️❤️❤️ 恭喜! 恭喜! 又收了一名小弟! ❤️❤️❤️

  • 15
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值