2017网易游戏雷火盘古实习生招聘笔试真题-赛马

题目

在一条无限长的跑道上,有N匹马在不同的位置上出发开始赛马。当开始赛马比赛后,所有的马开始以自己的速度一直匀速前进。每匹马的速度都不一样,且全部是同样的均匀随机分布。在比赛中当某匹马追上了前面的某匹马时,被追上的马就出局。 请问按以上的规则比赛无限长的时间后,赛道上剩余的马匹数量的数学期望是多少

输入描述

每个测试输入包含1个测试用例
输入只有一行,一个正整数N
1 <= N <= 1000

输出描述

输出一个浮点数,精确到小数点后四位数字,表示剩余马匹数量的数学期望

输入例子

1
2

输出例子

1.0000
1.5000

问题分析

条件

  1. 赛道无限长!!!
  2. 赛道无限长!!!
  3. 赛道无限长!!!
    重要的事情先说三遍
  4. 马被追上就出局

马匹的速度不同,所以假设为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 

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;
}

你可能感兴趣的:(2017网易游戏雷火盘古实习生招聘笔试真题-赛马)