LightOJ 1248 Dice (III) 概率
2016-07-16 11:51
447 查看
[b]Description[/b]
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
[b]Input[/b]
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.
[b]Sample Input[/b]
5
1
2
3
6
100
[b]Sample Output[/b]
Case 1: 1
Case 2: 3
Case 3: 5.5
Case 4: 14.7
Case 5: 518.7377517640
[b] 题意:[/b]
有一个n面的骰子,每次投出,每个面出现的概率都一样
问你每个面都出现一次的期望
[b]题解:[/b]
假设dp[i] 为还有i个面没有出现的期望
那么答案是dp
;
那么有
dp[i] = (dp[i-1]*(i) + (n-i)*dp[i]) / n;
化简一下即可
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
[b]Input[/b]
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.
[b]Sample Input[/b]
5
1
2
3
6
100
[b]Sample Output[/b]
Case 1: 1
Case 2: 3
Case 3: 5.5
Case 4: 14.7
Case 5: 518.7377517640
[b] 题意:[/b]
有一个n面的骰子,每次投出,每个面出现的概率都一样
问你每个面都出现一次的期望
[b]题解:[/b]
假设dp[i] 为还有i个面没有出现的期望
那么答案是dp
;
那么有
dp[i] = (dp[i-1]*(i) + (n-i)*dp[i]) / n;
化简一下即可
#include <cstdio> #include <cstring> #include <vector> #include<iostream> #include <algorithm> using namespace std; const int N = 1e2 + 10, M = 1e5+10 , mod = 1e9 + 7, inf = 2e9; int T,n,x; double dp[M+20],f,p; int main() { int cas = 1; scanf("%d",&T); while(T--) { scanf("%d",&n); dp[0] = 0.0; for(int i=1;i<=n;i++) { dp[i] = (n + dp[i-1]*i) / (double)(i); } printf("Case %d: %.6f\n",cas++,dp ); } }
相关文章推荐
- 关联规则之Apriori
- 银行管理系统
- Spring杂记之--Spring配置文件
- 剑指offer系列—T28字符串的排列
- 数据库清除重复数据
- 在 Perl 中使用 Getopt::Long 模块来接收用户命令行参数
- dp和px间的转换及屏幕宽高的获取
- 移动端click事件延迟300ms正解大全
- 羊驼
- [poj 3461]Oulipo[kmp]
- php数据类型以及判断isset或者empty使用
- android学习路线:如何成长为高级工程师
- file_zilla 通过key连接远程服务器
- 160714、解决虚拟机上的tomcat无法被主机访问的问题
- Java EJB JBoss
- 集合(Collections)
- 第2章 进程管理和调度 (进程表示)
- 12. Integer to Roman
- 2016/07/16 《jquery仿新浪微博新版搜索下拉特效》学习笔记一
- C语言二进制思想以及数据的存储