超清晰眀了喝汽水问题,望周知。(文章末尾附完整代码)

 

喝汽水问题

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

代码中:total表示汽水的瓶数,empty表示空瓶数,money表示所拥有的钱。

1.方法一直接分析

假设总共有X元

那么第一次就能买X瓶水

汽水:total= X

空瓶:empty= X

然后就空出X个瓶子,

(如果空出来的瓶子大于1)空出瓶子的一半能再去换水

汽水:total=empty/2+total

空瓶:empty=empty/2+empty%2

(此时的空瓶为第二次换的汽水,每一个汽水就有一个空瓶,加上没换掉的瓶子)

 

eg:money=5为例

b1bea7b2f11249b391566b2eab142ae9.png

方法一代码:

#include <stdio.h>
int main()
{
    int money = 0;
    scanf("%d", &money);
    int total = money;
    int empty = money;
    while (empty > 1)
    {
        total = empty / 2 + total;
        empty = empty / 2 + empty % 2;
    }
    printf("%d", total);
    return 0;
}

 


2.方法二分奇偶,分类讨论

①假设有有X元(X为偶数)

第一次花X元,买X瓶,第二次就花X的空瓶,买X/2瓶,第三次就花X/2的空瓶,买X/4瓶,一直到第n次,X/n为1的时候停止,

  此时总瓶数为total=X + X/2 + X/4 +…+1

   有等比数列求和可知:

            total=2X-1,并且还留下了一个空瓶

  ②假设有Ⅹ元 (X为奇数)

     可转化为((X-1)+1)元

        此时X-1为偶数,代入上面偶数的式子有

                total1=2X-3

此时还留下一个空瓶子加一块钱,显然还能喝2瓶:

          total2 = 2;

此时能喝的总数为:

        total=total1 + total2 = 2X-1;

 

③综上所述

钱能喝的汽水的关系为:

              total = 2X-1

 

方法二代码:

#include <stdio.h>
int main()
{
   
        int money = 0;
        int total = 0;
        scanf("%d", &money);
       
        total = 2 * money - 1;
        
        printf("%d", total);
        return 0;
   
}

 

 

 

 

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值