日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

信息学奥赛一本通 1085:球弹跳高度的计算 | OpenJudge NOI 1.5 20

發布時間:2025/3/17 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 信息学奥赛一本通 1085:球弹跳高度的计算 | OpenJudge NOI 1.5 20 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【題目鏈接】

ybt 1085:球彈跳高度的計算
OpenJudge NOI 1.5 20:球彈跳高度的計算

【題目考點】

1. 循環

【解題思路】

1. 使用循環描述球的彈跳過程

2. 數學計算

分析各次落地前彈跳的距離
設球的初始高度是hhh

  • 第1次下落hhh,第1次落地,第1次反彈h2\frac{h}{2}2h?
  • 第2次下落h2\frac{h}{2}2h?,第2次落地,第2次反彈h4\frac{h}{4}4h?
  • 第3次下落h4\frac{h}{4}4h?,第3次落地,第3次反彈h8\frac{h}{8}8h?
  • 第i次下落h2i?1\frac{h}{2^{i-1}}2i?1h?,第i次落地,第i次反彈h2i\frac{h}{2^i}2ih?
    第10次落地之前,共經歷了10次下落,9次反彈,將下落和反彈的距離加和,設總距離為s:
    s=h+h2+h2+h4+h4+...+h29+h29=h+2(h2+h4+...+h29)=h+h+h2+h4+...+h28\begin{aligned} s &= h + \frac{h}{2} +\frac{h}{2} + \frac{h}{4}+\frac{h}{4}+...+\frac{h}{2^{9}}+\frac{h}{2^{9}}\\&= h + 2(\frac{h}{2} + \frac{h}{4} + ... +\frac{h}{2^{9}}) \\ &= h + h + \frac{h}{2} + \frac{h}{4} + ... +\frac{h}{2^{8}} \end{aligned}s?=h+2h?+2h?+4h?+4h?+...+29h?+29h?=h+2(2h?+4h?+...+29h?)=h+h+2h?+4h?+...+28h??
  • 根據等比序列加和公式:
    Sn=a11?qn1?qS_n = a_1\frac{1-q^n}{1-q}Sn?=a1?1?q1?qn?
    可以得到
    s=h(1+1+12+14+...+128)=h(1+1?(12)91?12)=h(3?128)\begin{aligned} s &= h(1 + 1 + \frac{1}{2} + \frac{1}{4} + ... +\frac{1}{2^{8}}) \\ &=h(1 + \frac{1-(\frac{1}{2})^9}{1-\frac{1}{2}})\\ &= h(3 - \frac{1}{2^8}) \end{aligned}s?=h(1+1+21?+41?+...+281?)=h(1+1?21?1?(21?)9?)=h(3?281?)?
  • 根據規律可知,第10次反彈的距離為:h210\frac{h}{2^{10}}210h?

【題解代碼】

解法1:使用循環描述球的運行過程

#include <bits/stdc++.h> using namespace std; int main() {double h;//彈跳高度cin>>h;double sum = h;//sum:總距離,初始值設為h,即第一次下落的距離為hfor(int i = 2; i <= 10; ++i)//i表示第幾次落地{h /= 2;//落地后彈跳高度變為原來的一半。h在運算后表示第i-1次落地后彈起的高度,也就是第i次下落的高度。sum += 2 * h;//球彈起距離h,下落距離h,經過2h距離后再次落地。運行這句后,此時sum表示第i次落地時小球經過的距離}//此時sum為第10次落地時經過的距離,h為第10次下落的高度,第10次彈起的高度應該為h/2cout<<sum<<endl<<h/2<<endl;return 0; }

解法2:根據數學推導輸出結果

在上述【解題思路】中得到結論:
球彈跳的總距離:h(3?128)h(3 - \frac{1}{2^8})h(3?281?)
第10次彈起的距離:h210\frac{h}{2^{10}}210h?

#include <bits/stdc++.h> using namespace std; int main() {double h;cin>>h; cout<<h * (3 - 1 / pow(2, 8))<<endl<<h / pow(2, 10)<<endl;return 0; }

總結

以上是生活随笔為你收集整理的信息学奥赛一本通 1085:球弹跳高度的计算 | OpenJudge NOI 1.5 20的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。