1. 程式人生 > 其它 >習題4-8 高空墜球 (20分)

習題4-8 高空墜球 (20分)

技術標籤:# 浙大版《C語言程式設計(第3版)》題目集c語言c++visual studio

皮球從某給定高度自由落下,觸地後反彈到原高度的一半,再落下,再反彈,……,如此反覆。問皮球在第n次落地時,在空中一共經過多少距離?第n次反彈的高度是多少?

輸入格式:
輸入在一行中給出兩個非負整數,分別是皮球的初始高度和n,均在長整型範圍內。

輸出格式:
在一行中順序輸出皮球第n次落地時在空中經過的距離、以及第n次反彈的高度,其間以一個空格分隔,保留一位小數。題目保證計算結果不超過雙精度範圍。

輸入樣例:

33 5

輸出樣例:

94.9 1.0

原始碼

#include<stdio.h>
#include<math.h> #pragma warning(disable:4996) int main() { long begin, n; scanf("%ld%ld", &begin, &n); //double sum = begin, high = 0; if (n == 0) { printf("0.0 0.0"); } else { //for (int i = 0; i < n; i++)//不能用for迴圈,執行超時,求一下公式 //{ // sum += high * 2; // high = begin*1.0 / 2;
// begin = high; //} //n從1開始,多些幾項,找規律 //空中經過的距離=3*begin-begin/(2^(n-2)) 反彈高度=begin*0.5^n double sum = 3 * begin - begin / (pow(2, n - 2)); double high = begin*pow(0.5, n); printf("%.1lf %.1lf", sum, high); } //#include<stdio.h> //#include<math.h> // int main() { // long high, n; // scanf("%ld %ld", &high, &n);
// if (n == 0)printf("0.0 0.0"); // else printf("%.1lf %.1lf", 3.0*high - high / (pow(2, n - 2)), high*(pow(0.5, n))); // return 0; // } getchar(); getchar(); return 0; }

***謝謝!!!