喝汽水问题

简介: 喝汽水问题

喝汽水问题


喝汽水,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


目录
相关文章
|
8月前
如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝(详解)
如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝(详解)
54 1
如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝(详解)
|
8月前
【多思路解决喝汽水问题】1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水
【多思路解决喝汽水问题】1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水
211 0
|
5G 知识图谱
根据体重计算可以喝汽水的罐数
根据体重计算可以喝汽水的罐数
114 1
|
测试技术 C++ Python
糖果-蓝桥杯19省赛
糖果-蓝桥杯19省赛
120 0
|
人工智能
【寒假每日一题】AcWing 4700. 何以包邮?
目录 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 三、知识风暴 0-1背包问题
146 0
|
C语言
【C】喝汽水,找单身狗问题
【C】喝汽水,找单身狗问题
111 0
|
Windows
我要喝汽水
我要喝汽水
154 0
我要喝汽水
|
C语言
【C语言】一道有趣的喝汽水问题(会不会喝?喝不喝?)
【C语言】一道有趣的喝汽水问题(会不会喝?喝不喝?)
154 0
【C语言】一道有趣的喝汽水问题(会不会喝?喝不喝?)
【面试】面试题之汽水空瓶子问题
有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空 汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满 的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?
375 0