ACMNO.14一球從M米高度自由下落,每次落地後返回原高度的一半,再落下。 它在第N次落地時反彈多高?共經過多少米? 保留兩位小數 輸入 M N 輸出 它在第N次落地時反彈多高?共經過多少米
阿新 • • 發佈:2018-12-15
題目描述
一球從M米高度自由下落,每次落地後返回原高度的一半,再落下。
它在第N次落地時反彈多高?共經過多少米? 保留兩位小數
輸入
M N
輸出
它在第N次落地時反彈多高?共經過多少米? 保留兩位小數,空格隔開,放在一行
樣例輸入
1000 5
樣例輸出
31.25 2875.00
來源/分類
C語言
題目截圖:
思路:
首先想到用for迴圈語句來解決! 下落一次比較長,要加上! s+=a; 然後長度縮減一半! a=a/2; 再加上縮減之後的一半! s+=a; 但是整個程式計算的是它從被丟擲點,到落地的距離! 我們要計算的是,他懸空終止的總距離! 再減去最後一次反彈起來的距離! s-=a;
程式碼:
#include<iostream> using namespace std; int main() { double a,b,s; s=0; cin>>a>>b; //printf("a %.2f\n",a); //printf("b %.2f\n",b); //printf("s %.2f\n\n\n",s); for(int i=0;i<b;i++) { s+=a; a=a/2; s+=a; //printf("a %.2f\n",a); //printf("s %.2f\n",s); } s-=a; printf("%.2f %.2f",a,s); }
程式碼截圖:
程式碼執行截圖:
OJ結果: