Wannafly 挑战赛16 A 取石子
题目描述
输入描述:
在一行内读入四个由空格分隔的整数a,b,c,d, 输入均为不超过500的正整数
输出描述:
输出一个整数表示答案,答案对109+7取模
备注:
输入均为不超过500的正整数
【分析】
每一堆的石子之间的相对位置是固定不变的,所以可以通过插入来生成一个取石子的顺序,而插入的求解则可以利用组合数来计算。 起始的时候,把第一堆的$$$a$$$个石头摆好,相当于在$$$a$$$个空位放下$$$a$$$个石头,由于石头顺序是固定的,所以有$$$C^a_a$$$种,也就是1种;

接下来,把第二堆的$$$b$$$个石头也加进来,要在$$$a$$$个石头之间以及两边插入$$$b$$$个石头,等价于一共有$$$a+b$$$个位置,在其中选$$$b$$$个位置,作为放置$$$b$$$的地方,由于$$$b$$$的顺序确定,所以组合数为$$$C^b_{a+b}$$$个

然后把第三堆的$$$c$$$个石头也加进来,在$$$a+b$$$个石头插入$$$c$$$个石头,同理,组合数为$$$C^c_{a+b+c}$$$个;

第四堆的$$$d$$$加进来就是$$$C^d_{a+b+c+d}$$$个。 所以最终答案为$$$C^a_a \times C^b_{a+b} \times C^c_{a+b+c} \times C^d_{a+b+c+d}$$$个

【注意】
组合数较大需要用long long存放;对答案需要取模 可以对组合数打表,来避免分数取模,公式为$$$C^x_y = C^x_{y-1} + C^{x-1}_{y-1}$$$
【代码】
#include<stdio.h>
#define N_max 2005
int n;
typedef long long ll;
#define mod 1000000007 ll C[N_max][N_max] = { 0 };
#define min(a,b) ((a)<(b)?(a):(b)) int main() { int a[4];
ll res = 1;
for (int t = 0; t < N_max; ++t)C[t][0]=1; for (int i = 1; i <N_max; ++i)
for (int j = 1; j <=i; ++j) {
C[i][j] = (C[i - 1][j - 1] + C[i - 1][j])%mod;
}
for (int i = 0; i < 4; ++i)
{
scanf("%d", a + i);
}
res = C[a[0]][a[0]];
res = res*C[a[0] + a[1]][a[1]]%mod;
res = res*C[a[0] + a[1]+a[2]][a[2]]%mod;
res = res*C[a[0] + a[1]+a[2]+a[3]][a[3]]%mod; printf("%lld", res);
return 0;
}
Wannafly 挑战赛16 A 取石子的更多相关文章
- Wannafly挑战赛16
E(pbds) 题意: 1<=m,n<=5e5 分析: 首先指向关系形成了一个基环外向树森林 实际上我们可以完全不用真正的去移动每个球,而只需要在计数的时候考虑考虑就行了 对于树上的情况, ...
- Wannafly挑战赛16 #E 弹球弹弹弹 splay+基环树+各种思维
链接:https://ac.nowcoder.com/acm/problem/16033来源:牛客网 有n个位置,标号为1到n的整数,m次操作,第i次操作放置一个弹球在b[i] xor c[i-1]处 ...
- Wannafly挑战赛24游记
Wannafly挑战赛24游记 A - 石子游戏 题目大意: A和B两人玩游戏,总共有\(n(n\le10^4)\)堆石子,轮流进行一些操作,不能进行下去的人则输掉这局游戏.操作包含以下两种: 把石子 ...
- 【挑战赛16A】【取石子】【组合数学】
链接:https://www.nowcoder.com/acm/contest/113/A 来源:牛客网 取石子时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 262144K,其他语言5 ...
- Wannafly 挑战赛 19 参考题解
这一次的 Wannafly 挑战赛题目是我出的,除了第一题,剩余的题目好像对大部分算法竞赛者来说好像都不是特别友好,但是个人感觉题目质量还是过得去的,下面是题目链接以及题解. [题目链接] Wanna ...
- 【COGS 56】质数取石子
[问题描述] DD 和 MM 正在玩取石子游戏.他们的游戏规则是这样的:桌上有若干石子,DD 先取,轮流取,每次必须取质数个.如果某一时刻某一方无法从桌上的石子中取质数个,比如说剩下 0 个或 1 个 ...
- Wannafly挑战赛25游记
Wannafly挑战赛25游记 A - 因子 题目大意: 令\(x=n!(n\le10^{12})\),给定一大于\(1\)的正整数\(p(p\le10000)\)求一个\(k\)使得\(p^k|x\ ...
- Wannafly挑战赛27
Wannafly挑战赛27 我打的第一场$Wannafly$是第25场,$T2$竟然出了一个几何题?而且还把我好不容易升上绿的$Rating$又降回了蓝名...之后再不敢打$Wannafly$了. 由 ...
- Wannafly挑战赛22游记
Wannafly挑战赛22游记 幸运的人都是相似的,不幸的人各有各的不幸. --题记 A-计数器 题目大意: 有一个计数器,计数器的初始值为\(0\),每次操作你可以把计数器的值加上\(a_1,a_2 ...
随机推荐
- java的编码格式
几种常见的编码格式 为什么要编码 不知道大家有没有想过一个问题,那就是为什么要编码?我们能不能不编码?要回答这个问题必须要回到计算机是如何表示我们人类能够理解的符号的,这些符号也就是我们人类使用的语言 ...
- WPF程序,运行时,结束时,要运行的操作(自动保存,检查单程序)
/// <summary> /// App.xaml 的交互逻辑 /// </summary> public partial class App : Application { ...
- python通过mongoengine中connect函数连接多个数据库
mongoengine支持程序同时连接多个数据库,这些数据库可以位于一个或多个mongo之中,通过alias名称区分不同的连接即可. 可以通过switch_db切换到不同的数据库,进行读写操作,swi ...
- 3991: [SDOI2015]寻宝游戏
3991: [SDOI2015]寻宝游戏 https://www.lydsy.com/JudgeOnline/problem.php?id=3991 分析: 虚树+set. 要求树上许多点之间的路径的 ...
- spring-boot、spring-data-jpa、hibernate整合
一.Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置. ...
- MySQL高级-MySQL安装
1.mysql安装 检查系统是否安装过mysql 查询命令:rpm -qa|grep -i mysql 删除命令:rpm -e RPM软件包名(该名字是上一个命令查出来的名字) 安装命令:rpm -i ...
- SpringBoot入门(五)——自定义配置
本文来自网易云社区 大部分比萨店也提供某种形式的自动配置.你可以点荤比萨.素比萨.香辣意大利比萨,或者是自动配置比萨中的极品--至尊比萨.在下单时,你并没有指定具体的辅料,你所点的比萨种类决定了所用的 ...
- 怎样安装JMeter
JMeter有图形界面, 而且支持中文! JMeter官网地址: http://jmeter.apache.org/ 点击左上角的下载: 点击下面的.zip后缀的压缩包: 解压到本地: JMeter目 ...
- Linux命令应用大词典-第36章 密码和证书管理
36.1 pwdhash:密码哈希生成器 36.2 mkpasswd:生成应用于用户的新密码 36.3 keytool:密钥和证书管理工具 36.4 certutil:证书服务器管理工具 36.5 v ...
- 第一章 了解TCP/IP协议族
第一章 了解TCP/IP协议族 1.1 TCP/IP协议族体系结构以及主要协议 IP和TCP协议对编写程序具有最直接的影响,后面的章节会详细的讲到. TCP/IP的体系结构有应用层,传输层,网络层,数 ...