Description

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

  1. 电影院的座位共有K个,并被标号为1…K,每个人买完票后会被随机指定一个座位,具体来说是从1…K中等可能的随机选取一个正整数,设其为L。
  2. 如果编号L的座位是空位,则这个座位就分配给此人,否则将L加一,继续前面的步骤。
  3. 如果在第二步中不存在编号L的座位,则该人只能站着看电影,即所谓的站票。

小白班上共有N人(包括小白自己),作为数学爱好者,小白想知道全班都能够有座位的概率是多少。

 

Input

输入文件第一行有且只有一个正整数T,表示测试数据的组数。
第2~T+1行,每行两个正整数N,K,用单个空格隔开,其含义同题目描述。

Output

输出文件共包含T行。
第i行应包含两个用空格隔开的整数A,B,表示输入文件中的第i组数据的答案为A/B。(注意,这里要求将答案化为既约分数)

Sample Input

3
1 1
2 1
2 2

Sample Output

1 1
0 1
3 4

Hint

对于100%的数据 T<=50,N,K<=200​​,1<=n<=101810^{18}10​18​​,1<=q<=10510^510​5​​

先讲我的摸索出公式心路历程,再讲正常的方法啦,可以自行跳过

没有头绪,推不出式子,怎么办?

模小点打表啊(在机房的时间不够没来得及打代码来打表,所以上课手模超辛酸)

分母是显而易见的,kn,找分子:

4节文化课的成果,再大的点真的模不出来,包括那个5 5

先观察n=k的情况,可以发现是(n+1)n-1

猜测问号处的值是64=1296

第1行,逐项做差:1 1 1 1 1

第2行,也是:5 7 9。再来一次:2 2。

第3行,做差:34 58。再来:24。

发现,做差几次后,会得到常数列。做差的次数为n次。证明这序列是个n-1次函数。

再发现:通过观察右偏下45度的每一条对角线,f(n,k)一定会被(k-n+1)整除。整除之后的商都是次方数。

找到规律:分子是(k-n+1)×(k+1)n-1

接下来考虑约分,显而易见分子上的(k+1)和分母的k不可约分,只有k-n+1需要与k约分

但是可能不止约了一次!如k=18而n=15,那么分别是4和18进行约分

剩下2和9,不要着急往分母分子上乘,因为我们可以拿出另一个k=18,把2约干净。

所以要不断除,直到k的个数不够或者gcd为1。

正常思路:

推出了式子之后,我开始考虑这个式子是什么含义:

我们增加一个座位,表示被干出去的人,最后只需检察这个位置上有没有人即可。

我们把所有作为连成一个环,计算合法方案数即可。

 #include<cstdio>
struct gj{
long long x[];int ws;
friend void operator*=(gj &a,int t){
for(int i=;i<=a.ws;++i)a.x[i]*=t;
for(int i=;i<=a.ws;++i)a.x[i+]+=a.x[i]/,a.x[i]%=;
if(a.x[a.ws+])a.ws=a.ws+;
}
void print(){
printf("%lld",x[ws]);x[ws]=;
for(int i=ws-;i>=;--i)printf("%015lld",x[i]),x[i]=;
ws=;x[]=;
}
}fz,fm;
int gcd(int a,int b){return b?gcd(b,a%b):a;}
int k,n,t;
int main(){
scanf("%d",&t);fz.x[]=fm.x[]=;
while(t--){
scanf("%d%d",&n,&k);
if(n>k){puts("0 1");continue;}
int ex=k-n+,tms=n;
while(gcd(ex,k)!=&&tms)fm*=k/gcd(ex,k),ex/=gcd(ex,k),tms--;
fz*=ex;
for(int i=n-;i;i--)fz*=k+;
for(int i=tms;i;--i)fm*=k;
fz.print();putchar(' ');fm.print();puts("");
}
}

详情见代码

看电影(movie):组合数的更多相关文章

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

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

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

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

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

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

  4. UESTC_邱老师看电影 2015 UESTC Training for Dynamic Programming<Problem F>

    F - 邱老师看电影 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submi ...

  5. [ZJOI2011]看电影(MOVIE)

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

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

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

  7. 用Emacs看电影

    大多数人用emacs听歌,我却喜欢用emacs看电影.用 EMMS 和 mplayer 结合,看电影真是太方便了. 不要从源里安装EMMS,它可能给你安装别的播放器,没必要,我们有 mplayer 足 ...

  8. UESTC 2015dp专题 F 邱老师看电影 概率dp

    邱老师看电影 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/65 Descr ...

  9. 我追一个处女座的女孩快两个月了,我之前聊得很好,她说过有空call我去看电影,过了一个月她就不理我了,我喜欢她, 我是程序员,百度发不了那么多字。

    她刚刚进公司的时候,公司组织去打球,我叫她一起去她也去了,我和她聊了很多,聊得很自然,很开心,如我是哪个学习毕业的 我出来工作多久了等,她也聊了 她自己好多,她现在在读大学,只有周日上一天课那种. 我 ...

随机推荐

  1. linux shell 统计当前目录下的文件个数

    shell 统计当前目录下文件个数,使用管道组合命令: ls -1 | wc -l 解释: ls -1 表示一行一个列出文件名. wc -l 表示打印统计的行数. 两个命令通过管道连在一起表示打印列出 ...

  2. 分库分表(3) ---SpringBoot + ShardingSphere 实现读写分离

    分库分表(3)---ShardingSphere实现读写分离 有关ShardingSphere概念前面写了两篇博客: 1.分库分表(1) --- 理论 2. 分库分表(2) --- ShardingS ...

  3. (八十四)c#Winform自定义控件-导航菜单(类Office菜单)

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...

  4. 强大得分布式项目管理工具Git

    ---恢复内容开始--- 强大的分布式管理工具-Git(一) 前言:最近忙着写项目,在期间呢,用的是git管理,由于一个项目的管理是很重要得,所以整理了一篇关于git得博客跟大家分享一下.大家都知道, ...

  5. .Net Core中的ObjectPool

    一.对象池 运用对象池化技术可以显著地提升性能,尤其是当对象的初始化过程代价较大或者频率较高.下面是ObjectPool源码中涉及的几个类.当你看过.Net Core源码很多时,你会发现,微软的开发很 ...

  6. 安装VMworkstation和Centos虚拟机

    1.安装VMware workstation. 2.下一步. 3.可以选择安装位置,下面选项不选. 4.这两个选项不需要选. 5.下一步 6.安装 7. 8.点击许可证输入密钥,密钥在网上搜,然后就完 ...

  7. [BZOJ1415][NOI2005]聪聪与可可

    Description Input 数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数. 第2行包含两个整数C和M,以空格分隔,分别表示初始时聪聪和可可所在的景点 ...

  8. PowerShell渗透--Empire(二)

    权限提升 Bypass UAC usemodule powershell/privesc/bypassuac 设置listener execute list查看 usemodule powershel ...

  9. linux-scp命令及如何设置免密登录

    部署测试环境时经常在两台服务器间copy文件,那么如何设置免密登录? 场景:源服务器A(如172) -> 目标服务器B(如71)  实现将服务器A的文件copy到服务器B 实现方式有两种: 在源 ...

  10. 3.1 C语言_实现AVL平衡二叉树

    [序] 上节我们实现了数据结构中最简单的Vector,那么来到第三章,我们需要实现一个Set set的特点是 内部有序且有唯一元素值:同时各种操作的期望操作时间复杂度在O(n·logn): 那么标准的 ...