18-有假币

题目

居然有假币! 现在猪肉涨了,但是农民的工资却不见涨啊,没钱怎么买猪肉啊。nowcoder这就去买猪肉,结果找来的零钱中有假币!!!可惜nowcoder 一不小心把它混进了一堆真币里面去了。只知道假币的重量比真币的质量要轻,给你一个天平(天平两端能容纳无限个硬币),请用最快的时间把那个可恶的假币找出来。

输入描述:

1≤n≤2^30,输入0结束程序。

输出描述:

最多要称几次一定能把那个假币找出来?

示例1

输入

3

12

0

输出

1

3


思路

要找到一堆货币中的假币,最快的方式是分三堆,使用其中两堆称重即可。

假币比真币轻,所以:

  1. 如果A<B,那么假币在A
  2. 如果A>B,那么假币在B
  3. 如果A=B,那么假币在C

题目问最多需要称几次,最坏的情况是假币每次都在三份最多的那份中。

对于n个货币,n的取值范围为1, 2\^30,每次分三份,找到最多的那份,即为n/3向上取整。如:

  • n=4,则分为1,1,2,取最多的2
  • n=5,则分为2,2,1,取最多的2

对n个货币不停地循环操作,每次分三份,取最大的那份(n/3向上取整),直到n=1。


代码

java 复制代码
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()) {
            int n = sc.nextInt();
            if(n == 0) {
                break;
            }
            int count = 0;
            while(n >= 2) {
                n = (int) Math.ceil((double) n / 3);
                count++;
            }
            System.out.println(count);
        }
    }
}
相关推荐
如何取名13 小时前
结合实际业务进行LRU淘汰算法优化设计(数据库开发日志)
数据库·算法
aichitang202413 小时前
快乐泛函每一天:希尔伯特空间中的最佳逼近与正交投影定理
人工智能·考研·算法·ai·面试·泛函分析
淬炼之火13 小时前
笔记:Visually-Guided Policy Optimization for Multimodal Reasoning
人工智能·笔记·算法·机器学习·语言模型·自然语言处理
一只QAQ13 小时前
c++项目
java·c++·算法
学习星球13 小时前
空天地一体化网络(NTN)深度解析:从Starlink D2C到3GPP NTN,卫星直连手机是如何实现的?
网络·人工智能·算法·智能手机·php
科技林总13 小时前
提示词测评落地全流程
人工智能·算法
晴天的雨.99213 小时前
类和对象下(内部类,匿名对象,对象拷贝时的编译器优化)
开发语言·c++·算法
旖旎夜光14 小时前
LeetCode 238:除自身以外数组的乘积(前缀和) —— 题解
数据结构·c++·算法·leetcode·前缀和
一条大祥脚14 小时前
26杭电暑期第八场(后半)快读|快写|tarjan|路径DP|mex转化|扫描线|前缀和|二分图
数据结构·算法·tarjan·杭电多校·强联通分量·动态规划dp
奈斯先生Vector14 小时前
从“能调用”到“可运营”:AI Agent 进入多模型时代后的架构升级
java·javascript·数据库·人工智能·算法·架构·aigc