找滚木
题号:NC220152
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

NIT正在玩皇室战争,NIT需要一种叫滚木的卡牌。众所周知皇室战争一共有n(n<=100000)种卡牌,NIT每开一个宝箱就能得到一张卡牌(宝箱开到每种卡牌的概率都是一样的)。现在NIT有一个换卡币,当NIT有两张一样(种类相同)的卡牌时,NIT可以用换卡币和这张卡牌换到滚木这张卡牌。NIT很想知道期望开多少个宝箱就可以得到滚木这张卡牌。


输入描述:

输入一个正整数n(n<=100000)表示皇室战争有多少张卡牌。

输出描述:

输出一个小数,保留两位小数,表示期望开多少个宝箱可以拿到滚木这张卡。

示例1

输入

复制
2

输出

复制
1.50

说明

有两种可能

1:NIT第一次开宝箱就拿到了滚木这张卡。一共开一个宝箱。

2:NIT第一次开宝箱没有拿到滚木,第二次要么拿到滚木要么拿到第一次拿到的卡牌,换到滚木。一共开两个宝箱。

所以期望(1+2)/2 = 1.5次拿到滚木

示例2

输入

复制
3

输出

复制
1.89
示例3

输入

复制
54321

输出

复制
291.78

备注:

对于 10%的数据,n<=5
对于 20%的数据,n<=10
对于 40%的数据,n<=100
对于 70%的数据,n<=1500
对于100%的数据,n<=100000