喝汽水问题

简介: 喝汽水问题

喝汽水问题


喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水。


钱数==买的汽水个数==空瓶个数
换的汽水个数==空瓶数/2+空瓶数%2(上一次剩余的空瓶数)
总汽水数==买的+换的


d72d86d370a7b2a181a9cc3ea8bef3df_c1121117461747e28fbe2809e976d4b4.png


代码实现如下


#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;
}


2fec8dd7bc4f6ec1ccbd518ca6e21f6d_44951c8356434122a0956f15902f59ff.png


如果使用数学公式的话,不难发现


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;
}

91ad7189db5197325a2297ce67970f47_7d6173ce290942b39233f032a9a58b5b.png


目录
相关文章
|
6月前
如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝(详解)
如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝(详解)
45 1
如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝(详解)
|
1月前
|
算法
AcWing 1343. 挤牛奶(每日一题)
AcWing 1343. 挤牛奶(每日一题)
|
1月前
|
算法
AcWing 1355. 母亲的牛奶(每日一题)
AcWing 1355. 母亲的牛奶(每日一题)
|
3月前
小猴吃桃子
小猴吃桃子
32 0
|
6月前
【多思路解决喝汽水问题】1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水
【多思路解决喝汽水问题】1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水
159 0
|
5G 知识图谱
根据体重计算可以喝汽水的罐数
根据体重计算可以喝汽水的罐数
106 1
猴子选大王
猴子选大王
101 0
|
C语言
【C】喝汽水,找单身狗问题
【C】喝汽水,找单身狗问题
102 0
|
存储
【LeetCode】这儿童节的糖不好吃啊
【LeetCode】这儿童节的糖不好吃啊
143 0
【LeetCode】这儿童节的糖不好吃啊