时间限制: 1Sec 内存限制: 128MB
题目描述
居然有假币!!!
事情是这样的,现在猪肉涨了,但是农民的工资却不见涨啊,没钱怎么买猪肉啊。老王这就去买猪肉,结果找来的零钱中有假币!!!可惜老王一不小心把它混进了一堆真币里面去了。现在知道假币的重量比真币的质量要轻。给你一个天平,请用最快的时间把那个可恶的假币找出来。
输入
输入有多行,每一行的值为硬币的数目n,1≤n≤2^30,输入0结束程序
输出
最少要称多少次一定能把那个假币找出来。输出对应输入行数.
样例输入
3
12
0
样例输出
1
3
Code
题目的中心思想是如和将一个用最快速的方法进行分堆,并且能识别出堆与堆之间的不同
有两种分法:
以N=8为例
第一种:二分法8/2=4
4 4 --> 2 2 --> 1 1
第二种:三分法8/3=2 3/3=1
3 3 2 --> 1 1 1 或者 1 1 0
以N=28为例
第一种:二分法28/2=14
14 14 --> 7 7 --> 3 3 --> 1 1
第二种:三分法28/3=9 10/3=3 4/3=1
10 10 8 --> 4 4 2 --> 2 2 0 --> 1 1 0
或 --> 3 3 2 --> 1 1 1 或者 1 1 0
总结&#