1 条题解
-
0
解题思路如下:
- 确定 :由 (干活猫数量)和 (最初猫高度),对两式取对数得 $\frac{\log h}{\log m} = \frac{\log (N + 1)}{\log N}$,通过循环尝试不同 值,使该等式在给定精度(如 )内成立。
- 计算层数 :利用 计算,结果四舍五入取整。
- 计算不干活的猫数量:
- 若 ,不干活的猫数量为 (因每一层仅 只猫,最小猫干活,无其他猫)。
- 若 ,利用等比数列求和公式,不干活的猫数量为 (总猫数减 ,除去最小猫层)。
- 计算总高度:根据等比数列求和,总高度为 $(N + 1)h\left(1 - \left(\frac{N}{N + 1}\right)^{k + 1}\right)$,其中 ,代入化简后计算。
通过以上步骤,可求解不干活的猫的数量及所有猫的高度总和。
#include<bits/stdc++.h> using namespace std; const double eps=1e-10; int h,m; double n,k; int main() { while(cin>>h>>m) { if(h==0&&m==0) { break; } n=1.0; while(fabs( log(n)/log(m) - log(n+1)/log(h) )>=eps) { n++; } k=int (log(h) / log(n+1)+0.5); if((int) n==1) { cout<<k<<" "; } else { cout<<int (0.5+(1-pow(n,k))/(1-n))<<" "; } cout<<int (0.5+(1-pow(n/(n+1),k+1))*(n+1)*h)<<"\n"; } return 0; }
- 1
信息
- ID
- 290
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 17
- 已通过
- 1
- 上传者