Nicn的刷题日常之喝汽水问题

Nicn的刷题日常之喝汽水问题_第1张图片

目录

1.题目描述 

2.解题思路

3.解题 

4.思路2

解题 


1.题目描述 

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

2.解题思路

1. 20元首先可以喝20瓶,此时手中有20个空瓶子
2. 两个空瓶子可以喝一瓶,喝完之后,空瓶子剩余:empty/2(两个空瓶子换的喝完后产生的瓶子) + empty%2(不够换的瓶子)
3. 如果瓶子个数超过1个,可以继续换,即重复2

3.解题 

int main()
{
	int money = 0;
	int total = 0;
	int empty = 0;


	scanf("%d", &money);
	
	//方法1
	total = money;
	empty = money;
	while(empty>1)
	{
		total += empty/2;
		empty = empty/2+empty%2;
	}

    printf("total = %d\n", total);
	return 0;
}

4.思路2

按照上述喝水和用瓶子换的规则的话,可以发现,其实就是个等差数列:money*2-1

解题 

int main()
{
	int money = 0;
	int total = 0;
	int empty = 0;


	scanf("%d", &money);
	
	//方法2
	if(money <= 0)
	{
		total = 0;
	}
	else
	{
		total = money*2-1;
	}
	printf("total = %d\n", total);


	return 0;
}

你可能感兴趣的:(数据结构,算法,c语言)