#include int main() { int n, m; scanf("%d %d", &n, &m); double total_distance = 0.0; // 总路程 double height_after_mth_bounce = n; // 第m次落地后的高度 // 计算每次落地的情况 int i; for (i = 1; i <= m; i++) { // 第i次落地时的落地距离 if (i == 1) { total_distance += n; // 第一次落地时的距离 } else { total_distance += height_after_mth_bounce * 2; // 加上反弹和下落的距离 } // 计算第i次落地后的反弹高度 height_after_mth_bounce /= 4.0; } // 输出结果,保留小数点后两位 printf("%.2f\n", total_distance); printf("%.2f\n", height_after_mth_bounce); return 0; }