李白街上走,提壶去打酒。遇店加一倍,见花喝一斗。n遇店和花,喝光壶中酒。
试问壶中原有多少酒?
释义:李白提壶上街买酒、喝酒,每次遇到酒店,便将壶中的酒量增添一倍,而每次见到花,便喝酒一斗,这样他遇店、见花经过n次,正好把酒全喝完了。问:壶中原有多少酒。
输入 一个正整数n,不超过100。 输出 一个小数,为壶中初始酒量(单位:斗),舍入到小数点后五位。 样例输入 3 样例输出 0.87500 来源 《奥数典型题举一反三(小学五年级)》 (ISBN 978-7-5445-2882-5) 第二章 第一讲 例3问题分析
本题的关键是找出递推式,找出递推式后计算就简单了(参见程序注释)。
程序说明
(略)。
AC的C++语言程序:
#include <iostream> #include <iomanip> using namespace std; int main() { int n; double ak; cin >> n; // ak+1 = 2 * ak -1 // ak = (ak+1 + 1) / 2, an+1 = 0 ak = 0; for(int i=1; i<=n; i++) ak = (ak + 1) / 2; cout << fixed << setprecision(5) << ak << endl; return 0; }