HDU 4599 Dice
来源:互联网 发布:淘宝购物返利那个高 编辑:程序博客网 时间:2024/04/30 04:47
Description
Given a normal dice (with 1, 2, 3, 4, 5, 6 on each face), we define:
F(N) to be the expected number of tosses until we have a number facing up for N consecutive times.
H(N) to be the expected number of tosses until we have the number '1' facing up for N consecutive times.
G(M) to be the expected number of tosses until we have the number '1' facing up for M times.
Given N, you are supposed to calculate the minimal M1 that G (M1) >= F (N) and the minimal M2 that G(M2)>=H(N)
F(N) to be the expected number of tosses until we have a number facing up for N consecutive times.
H(N) to be the expected number of tosses until we have the number '1' facing up for N consecutive times.
G(M) to be the expected number of tosses until we have the number '1' facing up for M times.
Given N, you are supposed to calculate the minimal M1 that G (M1) >= F (N) and the minimal M2 that G(M2)>=H(N)
Input
The input contains multiple cases.
Each case has a positive integer N in a separated line. (1<=N<=1000000000)
The input is terminated by a line containing a single 0.
Each case has a positive integer N in a separated line. (1<=N<=1000000000)
The input is terminated by a line containing a single 0.
Output
For each case, output the minimal M1 and M2 as required in a single line, separated by a single space.
Since the answer could be very large, you should output the answer mod 2011 instead.
Since the answer could be very large, you should output the answer mod 2011 instead.
Sample Input
120
Sample Output
1 12 7
期望dp
主要是推公式http://www.cnblogs.com/allh123/archive/2013/08/25/3281039.html
#include<cstdio>#include<cstring>#include<vector>#include<iostream>#include<queue>#include<algorithm>#include<cmath>#include<cstdlib>#include<string>using namespace std;const int base = 2011;const int size = 2;int n;int inv(int x){if (x == 1) return 1;else return inv(base % x)*(base - base / x) % base;}int get(int x, int y){int i, j;for (i = x, j = 1; y; y >>= 1){if (y & 1) (j *= i) %= base;(i *= i) %= base;}return j;}void work(int n){int x = get(6, n) - 1;int y = (((x+25) * inv(30) % base) + base) % base;int z = ((x * inv(5) % base) + base) % base;printf("%d %d\n", y, z);}int main(){while (scanf("%d", &n), n) work(n);}
0 0
- hdu 4599 Dice
- hdu 4599 Dice
- HDU 4599 Dice
- HDU 4599 Dice
- HDU 4599 Dice (概率dp)
- HDU 4599 Dice(概率dp)
- HDU-4599 Dice (概率DP)
- hdu 4652 Dice
- hdu-Play the Dice
- hdu 4652 Dice(期望)
- hdu 5012 Dice
- HDU 5012 Dice
- hdu 5012 dice
- 【搜索】 HDU 5012 Dice
- HDU 5012 Dice
- hdu 5012 Dice
- HDU 5012-Dice(BFS)
- Dice - HDU 5012 搜索
- 2015年16个最佳的免费响应式HTML5框架
- 计步器
- 统计字符串的某一子串在字符串中的出现次数(C语言实现)
- Mybatis学习(4)实现关联数据的查询
- 简述 synchronized 和 java.util.concurrent.locks.Lock 的异同 ?
- HDU 4599 Dice
- 合并表格(Table)单元格
- SVN服务端安装
- centos6.x下让redis以服务方式运行
- 黑马程序员——java概述
- 4Sum
- 欢迎使用CSDN-markdown编辑器
- Oracle数据库之创建表空间与用户
- COM学习笔记1_COM初步探索