换汽水问题

1.规则:喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给lin元,可以喝多少瓶汽水。

2:思路:方法1:换取条件为至少具有2个空瓶,lin元可购买lin/1)瓶汽水,之后可得到(lin/1)个空瓶,

每次可获得(空瓶数/2)瓶新汽水,考虑购买时空瓶数可能并不是2的倍数,新空瓶数=空瓶数/2+空瓶数%2

需多次遍历,可利用循环实现。

方法2(找规律):设lin={1,2,3,4,5,6,7,8,9,10},总瓶数={1,3,5,7,9,11,13,15,17,19}

由此可见总瓶数为等差数列,可通过数学公示an=a1+(n-1)d得到an=2n-1

3.实现换汽水问题:

方法1:

#include<stdio.h>
int main()
{
	int lin = 0,sum=0,str=0;//lin汽水数、sum总瓶数、str空瓶数
	printf("请输入汽水数:");
	scanf("%d", &lin);
	sum = lin;
	str = lin;
	while (str > 1) {
		sum += str / 2;
		str = str / 2 + str % 2;
	}
	printf("喝掉汽水数:%d\n", sum);
	return 0;
}

方法2:找规律(等差数列)

#include<stdio.h>
int main()
{
    int lin = 0,sum=0,str=0;//lin汽水数、sum总瓶数、str空瓶数
	printf("请输入汽水数:");
	scanf("%d", &lin);
	sum = lin;
	str = lin;
	if(str <= 0)
	{
		sum = 0;
	}
	else
	{
		sum = lin*2-1;
	}
	printf("喝掉汽水数:%d\n", sum);
	return 0;
}

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值