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;
}
相關文章
相關標籤/搜索