OJ题[编程题总结] -- 可以换多少瓶汽水喝?

题目链接:https://www.nowcoder.com/practice/fe298c55694f4ed39e256170ff2c205f?tpId=37&&tqId=21245&rp=1&ru =/activity/oj&qru=/ta/huawei/question-ranking

思路: 

假如有10(n>2)个空瓶, 每3个空瓶可以换一瓶汽水, 则可以换3瓶汽水(还剩下1个空瓶), 即此时可以换n/3瓶汽水, 

这换来的3瓶汽水喝完后变成3个空瓶, 再加上刚剩下的1个空瓶, 则现在有4个空瓶, 即此时空瓶数量为n/3+n%3瓶,

4个空瓶又可以换1瓶汽水,则目前已经喝到了4瓶汽水, 

喝完换来的1瓶汽水以及刚剩下的1个空瓶(即若n=2),  这时再跟老板借一瓶汽水, 又可以凑够3个空瓶换1瓶汽水还给老板,

最后则可以喝到5瓶汽水

import java.util.*;
public class day1{
    public static int drink(int n){ //n:空瓶个数
        int total = 0; //total:汽水总数
        while(n > 2){
            total = total + n/3;
            n = n/3 + n%3;
        }
        if(n == 2){
            total = total + 1; //这时可以跟老板借一瓶喝完再换一瓶
        }
        return total;
    }
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int m;  //m: 键盘输入的数(表示空瓶数)
        while(sc.hasNext()){ //调用hasNext方法判断是否有数据输入
            m = sc.nextInt(); //调用nextInt方法实现键盘输入整型
            System.out.println(drink(m));//调用drink函数判断有m个空瓶能换多少瓶汽水
        }
    }
}

输入输出结果:

输入10,输出5:

输入81,输出40,

输入3,输出1

输入2,输出1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值