B2076 球弹跳高度的计算 题解

· · 题解

B2076 球弹跳高度的计算 题解

找规律

弹跳次数 经过米数 高度
1 h+\frac{h}{2}\cdot 2 \frac{h}{2^1}
2 h+2\cdot(\frac{h}{2} + \frac{h}{4}) \frac{h}{2^2}
3 h+2\cdot(\frac{h}{2}+\frac{h}{4}+\frac{h}{8}) \frac{h}{2^3}
... ... ...
10 h+2\cdot(\frac{h}{2}+\frac{h}{4}+...+\frac{h}{512}) \frac{h}{2^{10}}
\therefore 第10次弹跳后的高度为\color{green}\frac{h}{1024} h+2(\frac{h}{2}+\frac{h}{4}+...+\frac{h}{512})\\ =h\cdot(1+1+\frac{1}{2^1}+\frac{1}{2^2}+...+\frac{1}{2^8})

利用等比数列求和公式得(q为等比)

\begin{aligned} S &= 1+\frac{a_1-a_n*q}{q}\\ &= 1+\frac{1-\frac{1}{256}\cdot\frac{1}{2}}{\frac{1}{2}}\\ &= \frac{767}{256} \end{aligned} \therefore 第10次弹跳后共经过米数为\color{green}h\frac{767}{256}

奉上代码(注意精度):

#include <iostream>
int main(){
    int h; std::cin >> h;
    std::cout << h * 767.0 / 256.0 << std::endl << h / 1024.0;
    return 0;
}
\color{green}Aceepted