(C语言)喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水, 给20元,可以多少汽水。

问题描述

喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水, 给20元,可以多少汽水。

题目分析

以20瓶为例
第一步: 喝了20瓶(drink=20),已经喝了(dron=20k);剩余20个瓶子(num_bot=20);
第二步: 用20个瓶子去换10瓶饮料(drink=10),(num_bot=0),此时已经喝了
30瓶(dronk=dronk+drink);此时剩余瓶子10个(num_bot=num_bot+drink);
第三步: 用剩下的10个瓶子去换5瓶汽水(drink=5)(dronk=dronk+drink=35),
此时剩余瓶子数:num_bot=5;
第四步:用5个瓶子换2瓶可乐(drink=2)(dronk=dronk+drink=37)
还剩一个瓶子;此时剩余瓶子数应为,剩下的加上喝完的(num_bot=1+2=3)
(注意)

**第五步:**剩下的瓶子换一瓶还剩一个空瓶(num_bot=1)(drink=1)(dronk=1+37=38)
,此时剩余瓶子为 num_bot=喝完剩下的+ 5换2剩下的 (num_bot=1+1=0)
第六步用剩下的两个瓶子换一瓶此时drink=1;dronk=38+1=39;
注意在剩余瓶数为单数时,会剩下一个瓶子,需要将其保留到,直到出现下一个落单的瓶
子为止

代码实现

#include<stdio.h>
#include<Windows.h>
int main() {
	int money = 3;    //money

	int drink = 0;    //本次喝了的

	int dronk = 0;     //已经喝了

	int num_bot = 0;   //现在的瓶子数

	drink = money;   //初始化为money/价格,此处价格为1

	while (drink>0) {     //当drink<=0时结束循环
		dronk += drink;     //计算喝过的数量
		num_bot+=drink;
		drink = num_bot / 2;  
		num_bot %= 2;
	}
	printf("%d\n", dronk);
	system("pause");
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值