题目描述
有n个球,从外表上看不出差别,但有一个球比其他球重,其他N-1个球质量相等。请问:在地球上(废话),用天平最少称几次可以称出来?
输入
一个自然数N N小于等于2^24 大于0
输出
输出用天平最小的称量数m(m<30000)
样例输入
8
样例输出
2
天平称重,有两个托盘比较轻重,加上托盘外面,也就是每次称重有3个结果,就是ln3/ln2比特信息。n个球要知道其中一个不同的球,如果知道那个不同重量的球是轻还是重,找出来的话那就是n个结果中的一种,就是有ln(n)/ln2比特信息,假设我们要称k次,根据信息理论:k*ln3/ln2>=ln(n)/ln2,解得k>=ln(n)/ln3
floor(x)返回的是小于或等于x的最大整数。
ceil(x)返回的是大于x的最小整数。
ln(x) 在C中是log(x)
lg(x) 在C中是log10(x)
#include <stdio.h>
#include <math.h>
int main(){
long n,m;
scanf("%d",&n);
m=ceil(log(n)/log(3));
printf("%d",m);
return 0;
}