题目描述
小明很喜欢扑克牌,每次打牌都很积极,甚至很乐意洗牌。小明的洗牌很有特点,每次洗牌时小明手里拿着N张牌,编号是1~N。他会编号从小到大依次把牌放到桌上,第1张牌放桌上耗费的体力为1。后续放编号为i+1的牌时,可以放在最左边、最右边或者两张牌的中间,一共i+1个可选位置。小明会等概率地选择这i+1个位置。当牌放在最左边或最右边时,耗费的体力为1;当放在两张牌中间时,耗费的体力是两张牌编号的乘积。
你需要编一个程序,计算发完N张牌耗费的体力的期望。
输入
一个整数N。
输出
一个实数,表示发完N张牌耗费的体力的期望。与答案的相对误差或绝对误差不超过0.000001就算正确。
样例输入输出
样例输入 #1
2
样例输出 #1
2.0000000000
样例输入 #2
3
样例输出 #2
3.3333333333
样例输入 #3
17
样例输出 #3
365.8791050453
数据范围
对于 30% 的数据: N <= 20
对于 100% 的数据:1 <= N <= 100
我的代码