Description

\(k\)个座位,\(n\)个人依次过来,每人随机从\(k\)个座位中选择一个,并从它开始不停向后走直到遇到空座位坐下。求所有人都能坐下的概率(即没有人走到第\(k+1\)个位置)。\(n, k\leq200\),答案以有理数形式输出。

Solution

我们在最后一个座位之后添加第\(k+1\)个座位,并把这些座位连成环(\(k+1\)后面是第\(1\)个)。并令所有人可以从\(k+1\)个座位中任选一个。

那么现在每个座位坐到人的概率都相同(因为环是对称的),为\(\frac n{k+1}\)。答案实际上就是第\(k+1\)的座位没有人的概率,即\(\frac{k-n+1}{k+1}\)。但是这样是在所有人都可以选\(k+1\)的情况下的。而如果有人选了\(k+1\)就一定没有算到这个概率里,所以只需要乘上\(\left(\frac{k+1}k\right)^n\)即可。

所以答案即为

\[\frac{(k-n+1)(k+1)^{n-1}}{k^n}
\]

有理数计算的话,质因数分解+高精即可。

Code

#include <algorithm>
#include <cstdio>
#include <cstring>
const int N = 205;
int p[N];
int A[10000], len;
void add(int n, int m) {
for (int i = 2; i <= n; ++i) if (!(n % i)) {
while (!(n % i)) {
p[i] += m;
n /= i;
}
}
}
void mul(int x) {
for (int i = 0, t = 0; i < len || t; ++i) {
t = (A[i] = A[i] * x + t) / 10;
A[i] %= 10;
if (i >= len) len = i + 1;
}
}
int main() {
int T;
scanf("%d", &T);
while (T--) {
int n, k;
scanf("%d%d", &n, &k);
if (n > k) { puts("0 1"); continue; }
memset(p, 0, sizeof p);
add(k - n + 1, 1);
add(k + 1, n - 1);
add(k, -n);
memset(A, 0, sizeof A);
A[0] = len = 1;
for (int i = 1; i <= k + 1; ++i)
for (int j = 0; j < p[i]; ++j)
mul(i);
while (len--) printf("%d", A[len]);
putchar(' ');
memset(A, 0, sizeof A);
A[0] = len = 1;
for (int i = 1; i <= k + 1; ++i)
for (int j = p[i]; j < 0; ++j)
mul(i);
while (len--) printf("%d", A[len]);
putchar('\n');
}
}

BZOJ2227 [Zjoi2011]看电影(movie)的更多相关文章

  1. 【BZOJ2227】[ZJOI2011]看电影(组合数学,高精度)

    [BZOJ2227][ZJOI2011]看电影(组合数学,高精度) 题面 BZOJ 洛谷 题解 这题太神仙了. 首先\(K<N\)则必定无解,直接特判解决. 现在只考虑\(K\ge N\)的情况 ...

  2. [ZJOI2011]看电影(组合数学,高精度)

    [ZJOI2011]看电影 这题模型转化很巧妙.(神仙题) 对于这种题首先肯定知道答案就是合法方案除以总方案. 总方案显然是\(k^n\). 那么考虑怎么算合法方案. 当\(n>k\)的时候显然 ...

  3. [ZJOI2011]看电影(MOVIE)

    题目描述 到了难得的假期,小白班上组织大家去看电影.但由于假期里看电影的人太多,很难做到让全班看上同一场电影,最后大家在一个偏僻的小胡同里找到了一家电影院.但这家电影院分配座位的方式很特殊,具体方式如 ...

  4. Zjoi2011 看电影

    最近在学习一些概率的东西.. 一个随机试验称为 Laplace 试验,当且仅当它满足如下两个条件: (ⅰ) 试验结果 (样本点) 的个数是有限的.(Ω 是有限集) (ⅱ) 任意两个基本事件的概率均相等 ...

  5. [ZJOI2011]看电影(组合数学/打表+高精)

    Description 到了难得的假期,小白班上组织大家去看电影.但由于假期里看电影的人太多,很难做到让全班看上同一场电影,最后大家在一个偏僻的小胡同里找到了一家电影院.但这家电影院分配座位的方式很特 ...

  6. Zjoi2011看电影(movie)

    第一步,打表找规律,发现自己的表连3的小样例都过不去,还不如自己手模,自己手跑了5以下的样例,然后发现毫无规律可言…… 第二步,想出一种错误做法,首先n>k必零,人比座都多……然后粘一下图: 基 ...

  7. 【BZOJ2227】【ZJOI2011】看电影 [组合数][质因数分解]

    看电影 Time Limit: 10 Sec  Memory Limit: 259 MB[Submit][Status][Discuss] Description 到了难得的假期,小白班上组织大家去看 ...

  8. HDU 3496 Watch The Movie(看电影)

    HDU 3496 Watch The Movie(看电影) Time Limit: 1000MS   Memory Limit: 65536K [Description] [题目描述] New sem ...

  9. 开始ubuntu 14.04 的装X模式---终端模式下中文输入,听歌,上irc 开启framebuffer看电影 截图

    先上图吧 卡卡的全是在tty1 下的操作,看电影,听歌,截图 ,看图  ,上irc 等等,相当适合在小白面前装屁! 需要安装的软件: 为了能正常显示中文:安装fbterm sudo apt-get i ...

随机推荐

  1. [Virus Analysis]恶意软件分析(二)玩出花的批处理(中)

    本文作者:i春秋作家——Sp4ce 0×01上一篇文章部分 首先是文件目录 整理后的目录 整理前的部分文件代码 update.bat %%Q %%Q %%Q %%Q %%Q %%Q %%Q %%Q % ...

  2. 去除html代码中的标签

    public static String htmlText(String inputString) { String htmlStr = inputString; //含html标签的字符串 Stri ...

  3. 《JAVA与模式》之合成模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述合成(Composite)模式的: 合成模式属于对象的结构模式,有时又叫做“部分——整体”模式.合成模式将对象组织到树结构中,可以用来描述 ...

  4. margin 和 padding

    一图胜千言!!  参考 CSS padding margin border属性详解

  5. Window History对象

    History 对象属性 length 返回浏览器历史列表中的 URL 数量. History 对象方法 back() 加载 history 列表中的前一个 URL. window.history.b ...

  6. 51单片机SRF寄存器

    1.21个寄存器介绍        51系列单片机内部主要有四大功能模块,分别是I/O口模块.中断模块.定时器模块和串口通信模块(串行I/O口),如其结构和功能如下图: 图1 51单片机结构和功能图 ...

  7. Lingo 做线性规划 - Marketing Applications

    Reference: <An Introduction to Management Science Quantitative Approaches to Decision Making, Rev ...

  8. RHCE 学习结构

    本文内容为本站的 blog 链接 第一章   安装初体验 第二章   访问系统 2.1 基于图形化界面访问 2.2 基于文本访问 2.3 用户管理 第三章   文件系统 3.1  Linux 文件系统 ...

  9. SQLServer覆盖索引

    为了更好地理解覆盖索引,在正式介绍覆盖索引之前,首先稍微来谈一谈有关索引的一些基础知识. 数据页和索引页 在SQLServer中,数据存储的基本单位是页,一页的大小为8KB,分别由页首,数据行和行偏移 ...

  10. EF基础知识小记七(拆分实体到多个表以及拆分表到多个实体)

    一.拆分实体到多个表 1.在日常开发中,会经常碰到一些老系统,当客户提出一些新的需求,这些需求需要在原来的表的基础上加一些字段,大多数人会选择通过给原表添加字段的方式来完成这些需求,方法,虽然可行,但 ...