码迷,mamicode.com
首页 > 其他好文 > 详细

SPOJ Favorite Dice(数学期望)

时间:2017-12-15 15:08:26      阅读:371      评论:0      收藏:0      [点我收藏+]

标签:time   can   bsp   expec   one   des   ace   turn   sid   

BuggyD loves to carry his favorite die around. Perhaps you wonder why it‘s his favorite? Well, his die is magical and can be transformed into an N-sided unbiased die with the push of a button. Now BuggyD wants to learn more about his die, so he raises a question:

What is the expected number of throws of his die while it has N sides so that each number is rolled at least once?

Input

The first line of the input contains an integer t, the number of test cases. t test cases follow.

Each test case consists of a single line containing a single integer N (1 <= N <= 1000) - the number of sides on BuggyD‘s die.

Output

For each test case, print one line containing the expected number of times BuggyD needs to throw his N-sided die so that each number appears at least once. The expected number must be accurate to 2 decimal digits.

Example

Input:
2
1
12

Output:
1.00
37.24

 

题意:

甩一个n面的骰子,问每一面都被甩到的次数期望是多少。

思路:

比较简单,公式:初始化dp[]=0;  dp[i]=i/n*dp[i]+(n-i)/n*dp[i+1]+1;  化简逆推即可。  求的是dp[0];

 

#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<cstring>
#include<memory>
using namespace std;
double dp[2000];
int main()
{
    int T,i,j,n;
    scanf("%d",&T);
    while(T--){
        scanf("%d",&n); dp[n]=0;
        for(i=n-1;i>=0;i--) dp[i]=(dp[i+1]*(n-i)/n+1)*n/(n-i);
        printf("%.2lf\n",dp[0]);
    } return 0;
}

 

SPOJ Favorite Dice(数学期望)

标签:time   can   bsp   expec   one   des   ace   turn   sid   

原文地址:http://www.cnblogs.com/hua-dong/p/8042721.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!