UVa 107 - The Cat in the Hat
来源:互联网 发布:宣传折页设计软件 编辑:程序博客网 时间:2024/04/29 15:52
题目:有一只高度为h的猫,头上戴了一个帽子,帽子里有n只更小的猫,每只高h/(n+1);
每只小猫的头上也有帽子每只也有n只更小的猫,每只高h/(n+1)/(n+1),...;
最终到达猫的高度为1时终止。现在给你最开始的猫的高度(h)和高度为1的猫的数量(m);
求有多少高度大于1的猫,以及所有猫的高度和。
分析:数学题。根据题意可以列出下列等式:
(a)h = (n+1)^ k;(b)m = n ^ k;
整理得:(c)k = log(h)/ log(n+1)= log(m)/ log(n);
(c)构成了n的方程(d)f(n)= log(n+1)* log(m)- log(n)* log(h)= 0;
对(d)求导,导数< 0 ,可知f(n)递减,所以二分求解即可。
说明:注意分子为0,以及log的参数为1的情况。
#include <iostream>#include <cstdlib>#include <cstdio>#include <cmath>using namespace std;double bs( double h, double m ){double mid,l = 1.0,r = 1e100;while ( (r-l) > 1e-10 ) {mid = (l+r)/2.0;if ( log(mid+1)*log(m) > log(mid)*log(h) )l = mid;else r = mid;}return r;}int main(){double h,m,n,k,u;while ( cin >> h >> m && h ) {n = bs( h, m );k = log(h)/log(n+1);if ( fabs(n-1) > 1e-10 )u = (m-1)/(n-1);else u = k;printf("%.0lf %.0lf\n",u,h*(n+1)*(1-pow(n/(n+1),k+1)));}return 0;}
0 0
- uva 107 The Cat in the Hat
- uva 107 the cat in the hat
- uva 107 - The Cat in the Hat
- UVa 107 - The Cat in the Hat
- UVA 107 - The Cat in the Hat
- UVa 107 - The Cat in the Hat
- UVA 107 The Cat in the Hat
- uva 107 - The Cat in the Hat
- uva 107 The Cat in the Hat
- UVA 107 The Cat in the Hat
- uva 107 - The Cat in the Hat
- UVa 107 - The Cat in the Hat
- UVa - 107 - The Cat in the Hat
- UVa 107 - The Cat in the Hat
- UVA 107 The Cat in the Hat
- Uva 107 The Cat in the Hat
- UVA - 107 The Cat in the Hat
- UVa 107 The Cat in the Hat
- 闷诎诩烦挖
- CentOS6.5 root安装rvm & ruby
- 看这个近6这件与弹心,饲
- Mysql对子查询的支持与优化不是很好,建议采用jion的方式解决
- Regsvr32的使用
- UVa 107 - The Cat in the Hat
- 共享内存的练习
- 升级Ubuntu 12.04下的gcc到4.7
- sql where 1=1和 0=1 的作用
- The 3n + 1 problem - POJ 1207 水题
- 植物大战僵尸
- selenium 嵌套iframe
- mtu设置
- 使用Windows Installer来计算文件的MD5值