题目链接
题目解法
考虑数
x
x
x 比前面所有数都大的期望,即在数列
x
+
1
,
.
.
.
,
n
x+1,...,n
x+1,...,n 中排名最小的期望
即
(
n
−
x
)
!
(
n
−
x
+
1
)
!
=
1
n
−
x
+
1
\frac{(n-x)!}{(n-x+1)!}=\frac{1}{n-x+1}
(n−x+1)!(n−x)!=n−x+11
考虑
a
n
s
=
∑
1
n
−
i
+
1
=
∑
i
=
1
n
1
i
ans=\sum{\frac{1}{n-i+1}}=\sum_{i=1}^{n}{\frac{1}{i}}
ans=∑n−i+11=∑i=1ni1
当
n
n
n 小的时候可以暴力计算
当
n
n
n 大时,考虑到答案是调和级数,大概为
l
n
(
n
)
+
G
a
m
m
a
ln(n)+Gamma
ln(n)+Gamma,
G
a
m
m
a
Gamma
Gamma 为欧拉常数,这里可以取
0.57721566490153285
0.57721566490153285
0.57721566490153285
#include <bits/stdc++.h>
using namespace std;
const double Gamma=0.57721566490153285;
inline int read(){
int FF=0,RR=1;
char ch=getchar();
for(;!isdigit(ch);ch=getchar()) if(ch=='-') RR=-1;
for(;isdigit(ch);ch=getchar()) FF=(FF<<1)+(FF<<3)+ch-48;
return FF*RR;
}
int main(){
int n=read();
double ans=0;
if(n<=1e8) for(int i=1;i<=n;i++) ans+=1.0/i;
else ans=log(n)+Gamma;
printf("%.8lf",ans);
return 0;
}