题解 | #汽水瓶#

汽水瓶

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

import java.util.Scanner;

/**
 * @author hll[yellowdradra@foxmail.com]
 * @description 有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。
 * 小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,
 * 喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。
 * 然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。
 * 如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?
 * @date 2021-05-25 23:10
 **/
public class Main {
    public static void main(String[] args) {
        final Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            int n = scanner.nextInt();
            if (n == 0) {
                return;
            }
            int exchanges = 0;
            while (n > 2) {
                // 当前瓶数除3得到的商是兑换的瓶数
                int remainder = n % 3;
                // 当前瓶数模3得到的是未能参与兑换的瓶数
                int quotient = n / 3;
                // 兑换到的瓶数累加
                exchanges += quotient;
                // 兑换到的瓶数 + 未能参与兑换的瓶数 = 下一轮参与兑换的瓶数
                n = remainder + quotient;
            }
            // 如果最后一轮剩下两个瓶子 则使用借一法(一看到这个题目就想到了小学奥数题。。)
            // 则兑换到的瓶数加一 
            // 如果你剩下一瓶 你可以把这瓶子借给剩两瓶的同学让他兑换一瓶 然后要求分三分之一的汽水
            // 如果有无数个剩下两瓶的同学 那么你将轻而易举完成资本的原始积累 /doge 
            System.out.println(n == 2 ? exchanges + 1 : exchanges);            
        }
    }
}
全部评论

相关推荐

10-22 12:03
山东大学 Java
程序员小白条:26届一般都得有实习,项目可以随便写的,如果不是开源社区的项目,随便包装,技术栈也是一样,所以本质应该找学历厂,多投投央国企和银行,技术要求稍微低一点的,或者国企控股那种,纯互联网一般都得要干活
应届生简历当中,HR最关...
点赞 评论 收藏
分享
10-30 16:31
重庆大学 Java
代码飞升_不回私信人...:你说你善于学习,大家都会说。你说你是985,985会替你表达一切
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务