数学概念——E 期望(经典问题)

E - 期望(经典问题)

Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu

Submit Status

Description

Given a dice with n sides, you have to find the expected number of times you have to throw that dice to see all its faces at least once. Assume that the dice is fair, that means when you throw the dice, the probability of occurring any face is equal.

For example, for a fair two sided coin, the result is 3. Because when you first throw the coin, you will definitely see a new face. If you throw the coin again, the chance of getting the opposite side is 0.5, and the chance of getting the same side is 0.5. So, the result is

1 + (1 + 0.5 * (1 + 0.5 * ...))

= 2 + 0.5 + 0.52 + 0.53 + ...

= 2 + 1 = 3

Input

Input starts with an integer T (≤ 100), denoting the number of test cases.

Each case starts with a line containing an integer n (1 ≤ n ≤ 105).

Output

For each case, print the case number and the expected number of times you have to throw the dice to see all its faces at least once. Errors less than 10-6 will be ignored.

Sample Input

5

1

2

3

6

100

Sample Output

Case 1: 1

Case 2: 3

Case 3: 5.5

Case 4: 14.7

Case 5: 518.7377517640

解题思路:

n个面的骰子 求每个面至少扔到一次的期望值

设dp[i]为已经扔了i个不同面的期望值 dp[n] = 0 求dp[0]

因为dp[i]为还需要扔i个不同的面 每次可能扔中已经扔过的面或者没有扔到过的面2中情况

所以dp[i] = (i/n)*dp[i] + (n-i)/n*dp[i+1] +1 等号2边都有dp[i]

移项得dp[i] = dp[i+1]+n/(n-i)

程序代码:

#include <cstdio>
using namespace std;
const int L=100010;
double  d[L];
int n;
int main()
{
    int t,Case=0;
    scanf("%d",&t);
     while(t--)
    {
       scanf("%d",&n);
       d[0]=0;
       for(int i=0;i<n;i++)
            d[i+1]=d[i]+n*1.0/(n-i);
       printf("Case %d: %.10f\n",++Case,d[n]);
    }
    return 0;
}

时间: 2025-01-05 23:59:39

数学概念——E 期望(经典问题)的相关文章

决策树算法(一)——一些重要的数学概念

写在前面的话 趁着现在我还是高中数理化老师,偶尔兼职英语老师的时候赶紧抓紧时间写点有关计算机科学技术的东西.一来是表示我对计算机的热爱,二来,当然是最重要的咯,满足一下我强大的虚荣心.哈哈哈哈!想想高中数学物理化学老师在折腾计算机,是不是有种瞬间吊炸天的感觉. 这个系列我写了一个月了,之后会陆陆续续的放出来的.希望对大家有一点点帮助.如果您没有看懂我在写啥,那一定是我错了,讲的不够清楚.世界上没有什么知识点是难的,只是看你知识储备和理解力达到了相应的水平没有.至少我是这么认为的. 当然,您要是觉

Math concepts / 数学概念

链接网址:Math concepts / 数学概念 – https://www.codelast.com/math-concepts-%e6%95%b0%e5%ad%a6%e6%a6%82%e5%bf%b5/ 这里记录了我在学习过程中遇到或总结的一些基础数学概念,保存于此,与需要者共享. Following are some basic math concepts I read or summarized in my learning process, I wrote them down her

数学概念的演变

前言 函数概念: 函数的概念有两个,其一为初中的定义,称为传统定义,其二为高中的定义,称为近代定义. 传统定义:设在某变化过程中有两个变量\(x\).\(y\),如果对于\(x\)在某一范围内的每一个确定的值,\(y\)都有唯一确定的值与它对应,那么就称\(y\)是\(x\)的函数,\(x\)叫做自变量.我们将自变量\(x\)取值的集合叫做函数的定义域,和自变量\(x\)对应的\(y\)的值叫做函数值,函数值的集合叫做函数的值域. 近代定义:设\(A\),\(B\)都是非空的数集,\(f:x→y

Python的各种解析操作,和数学概念中的解析有何联系?

python中的解析 Python支持各种解析(comprehension)操作,比如列表解析.集合解析.元组解析.字典解析.它们根据某些元素来创建(推导)出一个新的列表.集合.元组.字典等.所以有的地方也称为推导,比如列表推导.集合推导等. 下面是一个列表解析的示例: 1 >>> [ i*2 for i in range(10) if i % 2 == 0 ] 2 [0, 4, 8, 12, 16] 这里是列表解析,因为使用的中括号[ xxxx ],它表示根据条件推导出一个新的列表.P

程序设计语言基本概念语 与经典真题

一.基本概念 在计算机中,程序设计语言可划分为低级语言和高级语言两大类,与高级语言相比,用低级语言开发的程序,其运行效率高,但开发效率低.与程序设计相关的基本概念如下. (1)低级语言:又称面向机器语言,它是特定的计算机系统所固有的语言. (2)汇编语言:是机器语言的一种提升,它使用了一些助记符来表示机器指令中的操作码和操作数.但它仍然是一种和计算机机器语言十分接近的语言,使用起来仍然不太方便. (3)高级语言:与人们的自然语言比较接近,使用起来很方便,也极大的提高了程序设计效率. (4)编译程

数学 - 概念回顾

对数 如果a的x次方等于N(a>0,且a不等于1),即a^x=N(a>0,且a≠1),则x叫做以a为底N的对数,记做x=log(a)(N),其中a要写于log右下.其中a叫做对数的底数,N叫做真数.通常我们将10以底的对数叫做常用对数,以e为底的对数称为自然对数. 有理数 数学上,有理数是一个整数a和一个非零整数b的比,例如3/8,通则为a/b.0也是有理数.有理数是整数和分数的集合,整数也可看做是分母为一的分数. 有理数与分数的区别,分数是一种比值的记法.可以是无理数,例如根号2/2. 有理

Math concepts / 数学概念(转)

https://www.codelast.com/math-concepts-%E6%95%B0%E5%AD%A6%E6%A6%82%E5%BF%B5/ 这里记录了我在学习过程中遇到或总结的一些基础数学概念,保存于此,与需要者共享. Following are some basic math concepts I read or summarized in my learning process, I wrote them down here to share with those who ne

lightoj1038(数学概率与期望)

题意: 给出一个数字D 我们可以选择1-D中可以被D整除的数字,然后用D出得到一个新的数字D1: 然后在找所有D1的因子,用D1除,直到得到1: 问除的次数的期望值: 思路: d[i] 代表从i除到0的期望步数:那么假设i一共有c个因子(包括1和本身) d[i] = ( d[1] + d[a2] + d[a3] + d[a4] ..... + d[i] + c) / c; (加c是因为每一个期望值都会加1,因为多出一步才变成它) 把右边的d[i]移到左边就是: ( (c - 1) / c ) *

为什么数学概念中,将凸起的函数称为凹函数?

中国大陆数学界某些机构关于函数凹凸性定义和另一些机构不同. 那么我们来讲凸函数(convex function)为什么叫做是凸(convex)的:这是因为凸函数与凸集(convex set)有联系,而凸集的定义没有争议. 1. 凸函数与凸集通过 sublevel sets 这个概念联系起来. 首先来看一个函数的 sublevel sets.对于函数来说,它的-sublevel set 是这样定义的:也就是在函数定义域内,对应函数值小于的自变量的取值构成的集合. 联系1:对于任意来说,一个凸函数的