喝汽水问题
喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水。
钱数==买的汽水个数==空瓶个数 换的汽水个数==空瓶数/2+空瓶数%2(上一次剩余的空瓶数) 总汽水数==买的+换的
代码实现如下
#include<stdio.h> int main() { int money = 0; scanf("%d", &money); //第一次喝的汽水个数==钱数==空瓶数 int total = money; int empty = money; //置换(用空瓶换汽水) while (empty > 1) { //总汽水个数== 第一次喝的汽水数+置换的汽水个数 //两个空瓶换一个汽水 total += empty / 2; //总空瓶数=置换之后的汽水个数+置换时剩余的空瓶数 empty = empty / 2 + empty % 2; } printf("%d\n", total); return 0; }
如果使用数学公式的话,不难发现
total = 2*money - 1
代码就可以简化
#include<stdio.h> int main() { int money = 0; scanf("%d", &money); int total = 2 * money - 1; printf("%d\n", total); return 0; }