有假币
链接:https://www.nowcoder.com/questionTerminal/1d18c0841e64454cbc3afaea05e2f63c
来源:牛客网
题目描述:
居然有假币! 现在猪肉涨了,但是农民的工资却不见涨啊,没钱怎么买猪肉啊。nowcoder这就去买猪肉,结果找来的零钱中有假币!!!可惜nowcoder 一不小心把它混进了一堆真币里面去了。只知道假币的重量比真币的质量要轻,给你一个天平(天平两端能容纳无限个硬币),请用最快的时间把那个可恶的假币找出来。
解题思路:
将硬币分为A、B、C三份:
若A 若A>B,即假币在B中;
若A=B,即假币在C中。
以上将一堆硬币分为三份,是最快找到假币的方式,题目要求最多需要称几次,即就是最坏的情况即假币每次都在三份最多的那份里(分三份不总是均分)。
对于n个硬币,不停的循环操作,每次分三份,取最多的那份,即为 n/3 向上取整,直到n=1或n=2为止。
import java.util.*;public class Main{public static void main(String[] args){Scanner scanner = new Scanner(System.in);while(scanner.hasNext()){int n = scanner.nextInt();int count = 0;if(n == 0){break;}while(n >= 2){n = (int)Math.ceil((double)n / 3);count++;}System.out.println(count);}}
}