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 ...
随机推荐
- 苏州Uber人民优步奖励政策
人民优步(People's Uber)资费标准 起步价(Base Fare):¥0.00 每公里(Per KM):¥1.65 每分钟(Per Min):¥0.30 最低价(Min Fare):¥9.0 ...
- JAVA面试中问及HIBERNATE与 MYBATIS的对比
第一方面:开发速度的对比 就开发速度而言,Hibernate的真正掌握要比Mybatis来得难些.Mybatis框架相对简单很容易上手,但也相对简陋些.个人觉得要用好Mybatis还是首先要先理解好H ...
- 《绝地求生大逃杀》BE错误怎么办 BE服务未正常运行及安装失败解决方法
<绝地求生大逃杀>BattlEye Launcher是游戏的反作弊程序,也是启动过程中做容易出现错误的,今天小编带来“爆锤吧务”分享的<绝地求生大逃杀>BE服务未正常运行及安装 ...
- 一步一步学习JNI
本文来自网易云社区 作者:孙有军 前言 本篇的主要目的就是JNI开发入门,使大家对JNI开发流程有一个大致的了解,后续再进行深入学习. JNI不是Android特有的,JNI是Java Native ...
- 2019年猪年海报PSD模板-第三部分
14套精美猪年海报,免费猪年海报,下载地址:百度网盘,https://pan.baidu.com/s/15m6sWTdDzuBfdmHYxJVvbA
- fiddler不经意的功能
捕获指定客户端的请求,直接食用 窗口分离,直接食用 Hide this column 隐藏此列Ensure all columns are visible 显示默认所有列Customize co ...
- 使用getid3获取音频文件信息
今天有个需求,在上传音频文件时候自动获取音频的秒数,和大家分享一下. 首先把getid3的包下载下来 链接:https://pan.baidu.com/s/1Qmdj-I4boz9Sm9GFsON0D ...
- chrome编辑器与截图
在地址栏中输入 data:text/html,<html contenteditable>即可使用编辑功能,打开控制台,ctrl + shift + p 调用命令面板,输入 capture ...
- [Clr via C#读书笔记]Cp3共享程序集和强命名程
Cp3共享程序集和强命名程序集 私有方式部署+全局方式部署:弱命名程序集+强命名程序集 强命名程序集使用发布者的公钥私钥进行签名,唯一标识发布者. 共享dll被全部复制到System32中 强命名程序 ...
- 使用手机登录OWA修改密码的问题
最近发现使用手机端登录OWA,安卓手机是可以修改密码的,如图1,但是iPhone就不成,safari和第三方都不可以,如图二. 图一 图二