1311 - C语言程序设计教程(第三版)课后习题6.9
一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。它在第N次落地时反弹多高?共经过多少米?保留两位小数
Input
M N
Output
它在第N次落地时反弹多高?共经过多少米?保留两位小数,空格隔开,放在一行
Examples
Input
1000 5
Output
31.25 2875.00
Solution C
#include<stdio.h> #include<math.h> double total(double m,int n) { if(n==1) return m; else return total(m,n-1)+m/pow(2,n-2); } int main() { int i,j; int n; double m; scanf("%lf%d",&m,&n); double gaodu=m/pow(2,n); double zong=total(m,n); printf("%.2lf %.2lf",gaodu,zong); }
Solution C++
#include<iostream> #include<cstdio> using namespace std; int main() { double n,sum; int m; cin>>n>>m; sum=-n; for (int i=1; i<=m; i++) { sum+=2*n; n/=2; } printf("%.2lf %.2lf\n",n,sum); return 0; }