称硬币问题

 

 

 

最大熵模型

 

 

假设的N个硬币,只有一个假币

当知道假币的轻重的时候,信息熵为log(n), 需要的最小一定能找到假币的 称天平 次数为 log(n)/log(3) 的上界

当不知道假币轻重的时候,信息熵为log(2*n),需要的最小一定能找到假币的 称天平 次数为 log(2*n)/log(3) 的上界

 

一般都是把n硬币分成三类,如7个,则分成 2,2,3

a,b,c

若a = b,则 问题变成 在c中找假币

若a != b,则 问题变成 在 a或b 中找假币

 

 

http://acm.scs.bupt.cn/onlinejudge/newoj/showProblem/show_problem.php?problem_id=170

#include <iostream> #include <math.h> using namespace std; long long T,n; int main() { cin>>T; while(T--) { cin>>n; double t1 = log(2*n+0.0)/log(3.0); long long res3 = int(t1)+ (t1>(int) t1? 1 : 0); //求t1的上界 cout<<res3<<endl; } return 0; }

你可能感兴趣的:(c)