UVa 107 帽子里的猫

2014-11-24 09:00:28 · 作者: · 浏览: 1

/*

* 解题思路:

* 题意: 输入最开始的猫的高度和最后干活猫的数量 , 求有多少只猫不用干活和所有猫的高度和是多少

* 把题意理清就好( 设 H , M为输入的两个值 , K为产生了多少代 , N为每代产生多少只猫 )

* N ^ k = M , H * ( 1/( N+1 ) ) ^K = 1;

* K = log( M ) / log( N ) = log( H ) / log( N+1 );

* N从1开始遍历,直到上面两个等式相减绝对值小于1e-10 则找到N值

* 然后即可求出K值,最后做些相加运算即可

*/

#include 
  
   
#include 
   
     int main( ) { int i,m,n,sum1,sum2,num,tmp,x; while( scanf("%d%d",&m,&n) && m && n ) { num = 1; while( fabs( log(num)/log( num+1 ) - log( n )/log( m ) ) > 1e-10 ) num++; x = (int)(log( m )/log( num+1 )+0.5); sum1 = sum2 = 0; for( i=0;i