题库(37)_喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水, 给20元,可以多少汽水。 编程实现。

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<windows.h>
/*喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水, 
给20元,可以多少汽水。 
编程实现。*/
//方法一
int method(int n) {
	int drink = n;//上一次喝的//drink%2没兑完的
	int empty = n;//
	int remainder;
	while (empty > 1) {
		drink += empty / 2;//


		//remainder += drink % 2;//丢换剩余
		//empty = drink + remainder;//空瓶书等于上一次喝的数量+上上一次没兑换的瓶子//
		//drink = empty % 2;//换到的饮料数

		empty = empty / 2 + empty % 2;//空瓶书等于上一次喝的数量+上上一次没兑换的瓶子;
	}
	return drink;
}
//方法二
int num (int n)
{
	if (n != 0)//零元返回零瓶
	{
		if (n != 1)//一元返回一瓶
		{
			if (n%2 == 0)//偶数
			{
				return n + num(n/2);//偶数直接返回第n行的个数加第n-1行的个数

;
			}
			else//奇数
			{
				return (n - 1) + num((n/2) + 1);//奇数时吧第n行余下的一个挪到第n-1行,按n-1行的进行计算
			}
		}
		else
		{
			return 1;
		}
	}
	else
	{
		return 0;
	}
}
//方法三
int Fun2(int money,int num)
{
	
	money = money - num;
	int sum = 0;
	sum += num+1;
	while (money)
	{
		money-=(num-1);
		sum += num;
	}
	return sum;
}
int main()
{

	int n = 20;
	printf("%d", method(n));
	system("pause");
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值