题目:喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水(编程实现)
第一种方法:
思路如下:
实现的代码如下:
int main()
{
int money = 0;
scanf("%d", &money);
int total = money;
int empty = money;
while (empty >= 2)
{
total += empty / 2;
empty = empty / 2 + empty % 2;
}
printf("%d", total);
return 0;
}
进行多组数据的输入,观察所得到的数据可得到这样的一个规律:汽水数=2*钱数-1
这是为什么呢?
一瓶汽水1元,两个空瓶可换取一瓶汽水。不考虑其他条件,一个汽水空瓶值0.5元,所拥有的钱数是2*汽水空瓶数,往往换取饮料的最后,你总会留有一个汽水空瓶,即汽水空瓶数为所拥有钱数的二倍再减一。汽水空瓶的数量与汽水数量是相等的
第二种方法
思路:我分别用一元一元地去买汽水,当汽水瓶数等于2时就立马去换汽水,最后求汽水数
代码:
int main()
{
int money = 0;
scanf("%d", &money);
int total = 0;
int empty = 0;
while (money)
{
money--;
total++;
empty++;
if (empty == 2)
{
total++;
empty = 1;
}
}
printf("%d", total);
return 0;
}