題目
在一條無限長的跑道上,有N匹馬在不同的位置上出發開始賽馬。當開始賽馬比賽后,所有的馬開始以自己的速度一直勻速前進。每匹馬的速度都不一樣,且全部是同樣的均勻隨機分布。在比賽中當某匹馬追上了前面的某匹馬時,被追上的馬就出局。 請問按以上的規則比賽無限長的時間后,賽道上剩余的馬匹數量的數學期望是多少
輸入描述
每個測試輸入包含1個測試用例
輸入只有一行,一個正整數N
1 <= N <= 1000
輸出描述
輸出一個浮點數,精確到小數點后四位數字,表示剩余馬匹數量的數學期望
輸入例子
1
2
輸出例子
1.0000
1.5000
問題分析
條件
- 賽道無限長!!!
- 賽道無限長!!!
- 賽道無限長!!!
重要的事情先說三遍 - 馬被追上就出局
馬匹的速度不同,所以假設為a1>a2>a3......>an
a1一定能活,概率為1
a2在a1之后才能活,a2有兩種情況:a1之前,a1之后。概率為1/2
a2在a1,a2之后才能活,a3有三種情況: a1之前,a1,a2之間,a2之后。概率為1/3
...
ak在a1....ak-1之后才能活。k種情況,概率為1/k
...
an在a1....an-1之后才能活。n種情況,概率為1/n
即總的期望為1 + 1/2 + 1/3 + .... 1/k + ...1/n,歸納得f(n) = f(n-1) + 1/n
代碼
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
double sum = 0.0;
for (int i = 1; i <= n; i++) {
sum = sum + 1.0 / i;
}
printf("%.4lf\n", sum);
return 0;
}