SP1026 FAVDICE - Favorite Dice

题目描述

一个\(n(n \leq 1000)\)面的骰子,求指望掷几回能使得每一面都被掷到。spa

输入输出样例

输入样例#1:code

2
1
12

输出样例#1:io

1.00
37.24

思路:指望\(dp\)中典型的赠券收集问题,用f[i]表示还剩i个面没有掷到,那么掷到以前没有掷到过的面的几率为\((n-i)/n\),而后次数的指望值就是几率分之一,而后进行逆向\(dp\)便可。class

代码:di

#include<cstdio>
#define dl double
dl f[1007];
int n,t;
int main() {
  scanf("%d",&t);
  while(t--) {
    scanf("%d",&n);
    f[n]=0;
    for(int i=n-1;i>=0;--i) 
      f[i]=f[i+1]+(n/(n-(double)i));
    printf("%0.2lf\n",f[0]);
  }
  return 0;
}
相关文章
相关标签/搜索