关于饮料换购

题目描述

乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊 C 型饮料,凭 3 个瓶盖可以再换一瓶 C 型饮料,并且可以一直循环下去(但不允许暂借或赊账)。

请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么,对于他初始买入的 n 瓶饮料,最后他一共能喝到多少瓶饮料。

输入描述

输入一个整数 �(0<�<1000)n(0<n<1000),表示开始购买的饮料数量。

输出描述

输出一个整数,表示实际得到的饮料数

输入输出样例

示例
输入
100
输出
149
    import java.util.Scanner;
    public class Ping {
        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);
        //在此输入您的代码...
            int temp=scan.nextInt();
            int count = temp;
            while(true){
                int i,j;
                i = temp/3;
                j = temp%3;
                count = count + i;
                temp = i + j;
                if(temp < 3){
                    System.out.println(count);
                    break;
                }
            }
        }
    } 

比较笨,笨解

数学证明:

(初始的n瓶饮料会有n个初始的瓶盖,n≥3)

①若允许暂借:兑换最后一瓶饮料最少只需要2个初始瓶盖(向老板借一瓶,然后喝完带上新拿的这个瓶盖就有三个,可以抵掉这一瓶),若不是最后一瓶(初始的瓶盖剩余量不少于4个),不需要暂借就可以相当于从初始的瓶盖里面拿2个就额外喝一瓶。综上,只需要2个初始瓶盖就可以额外喝一瓶饮料,我们不妨称它为“换取额外饮料的净瓶盖数”(“换取额外饮料的净瓶盖数”==2个初始瓶盖)。

(很显然这种允许暂借情况下额外喝的饮料是n/2瓶)

②不允许暂借:与允许暂借的区别:初始瓶盖剩余量为2时候,无法换到额外饮料,也就是说在初始的瓶盖数量不足3的时候无法使用“换取额外饮料的净瓶盖数”来换饮料,但是初始瓶盖数量≥3时和允许暂借的情况是一样算的,唯一区别就在于初始瓶盖剩余量为2时候,①能换,②不能,所以n为偶数时额外喝的饮料是n/2 -1瓶,为奇数时额外喝的饮料和①一样也是n/2瓶。

(不难看出统一②中的n为奇、偶数 两种情况可得到:额外喝的饮料是ceil(double(n)/2)-1瓶 )

欢迎指正~

*/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值