题解 | #汽水瓶#

汽水瓶

https://www.nowcoder.com/practice/fe298c55694f4ed39e256170ff2c205f

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        List<Integer> res = new ArrayList<>();
        while (scanner.hasNext()) {
            int emptyNum = scanner.nextInt();
            int drinkableNum = 0;
            int borrowNum = 0;
            int exchangeRatio = 3;
            if (0 == emptyNum) {
                break;
            }
            while (emptyNum >= exchangeRatio) {
                int exchangeNum = emptyNum / exchangeRatio;
                drinkableNum += exchangeNum;
                emptyNum = emptyNum % exchangeRatio + exchangeNum;
                // 还上借的瓶子
                if (borrowNum > 0) {
                    emptyNum -= borrowNum;
                    borrowNum = 0;
                }
                // 可以借的情况:2借1,4借2,...,依此类推,剩余2n个空瓶可以借n个空瓶
                if (emptyNum % 2 == 0 && 0 != exchangeNum) {
                    borrowNum = (int) (emptyNum * 0.5);
                    emptyNum += borrowNum;
                }
            }
            res.add(drinkableNum);
        }
        res.forEach(n -> System.out.println(n));
    }
}

全部评论

相关推荐

03-24 21:23
已编辑
郑州大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务