帽子里的猫

来源:互联网 发布:上海皮肤科排名 知乎 编辑:程序博客网 时间:2024/04/29 00:24

假设K为帽子里编出的次数,M是最后的工作猫数,H是最后的高度。

则根据题意会有:

(1/(n+1))^K=1  和  n^K=M;①

联立消去K,会有

 ln(H)/ln(M) == ln(N+1)/ln(N);

然后用枚举的方法找到符合上述条件的N,代码如下:

 while (fabs(log(N)/log(N+1) -log(M)/log(H)) >1e-10) ++N;


由①处的两个式子自然可以算出K的值了~,

K = (int)(0.5+log(H)/log(N+1)); 

然后是求高度,是一个等比数列的求和公式:

int(0.5+ (1-pow(N/(N+1),K+1)) * (N+1) *H ) ;

这道题对math函数的使用要求较高,可以学到一些东西的运用。


0 0
原创粉丝点击