【挑战赛16A】【取石子】【组合数学】

时间:2023-01-25 23:55:45

链接:https://www.nowcoder.com/acm/contest/113/A

来源:牛客网

取石子
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描给出四堆石子,石子数分别为a,b,c,d。规定每次只能从堆顶取走石子,问取走所有石子的方案数。
输入描述:
在一行内读入四个由空格分隔的整数a,b,c,d, 输入均为不超过500的正整数
输出描述:
输出一个整数表示答案,答案对10^9+7
示例1
输入
3 5 4 2
输出
2522520
备注:
输入均为不超过500的正整数

题目分析:每堆石子内部的顺序已经确定,只有堆之间的顺序不确定,如果正面思考如何排序很难入手,反正最后都是要取出来放到一条线上,所以不如直接看作是在一个线上取相应多少的石子到相应的堆中,种类数也就是C(a+b+c+d,a) *C(b+c+d,b) * C(c+d,c)=(a+b+c+d)!/(a!b!c!d!)。利用逆元进行取模即可

 #include<iostream>
#include<cstdio>
using namespace std;
const long long mod=1e9+;
long long qaq(long long x)
{
long long ans=;
for(long long i = ; i <= x ; i++)
{
ans=(ans*i)%mod;
}
return ans;
}
long long mypow(long long x,long long y)
{
long long ans=;
while(y)
{
//cout <<x << endl;
if(y&)ans=(ans*x)%mod;
x=((x%mod)*(x%mod))%mod;
y/=; }
return ans;
}
int main()
{
long long a,b,c,d;
scanf("%lld%lld%lld%lld",&a,&b,&c,&d);
long long qwq=qaq(a+b+c+d)%mod;
long long orz1=qaq(a)%mod;
long long orz2=qaq(b)%mod;
long long orz3=qaq(c)%mod;
long long orz4=qaq(d)%mod;
long long orz5=(((((orz1*orz2)%mod)*orz3)%mod)*orz4)%mod;
long long endd=qwq*mypow(orz5,mod-)%mod;
cout << endd<<endl;
return ;
}

【挑战赛16A】【取石子】【组合数学】的更多相关文章

  1. Wannafly挑战赛16---A 取石子

    链接:https://www.nowcoder.com/acm/contest/113/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 262144K,其他语言52428 ...

  2. Wannafly 挑战赛16 A 取石子

    题目描述 给出四堆石子,石子数分别为a,b,c,d.规定每次只能从堆顶取走石子,问取走所有石子的方案数. 输入描述: 在一行内读入四个由空格分隔的整数a,b,c,d, 输入均为不超过500的正整数 输 ...

  3. 萌新笔记之Nim取石子游戏

    以下笔记摘自计算机丛书组合数学,机械工业出版社. Nim取石子游戏 Nim(来自德语Nimm!,意为拿取)取石子游戏. 前言: 哇咔咔,让我们来追寻娱乐数学的组合数学起源! 游戏内容: 有两个玩家面对 ...

  4. &lbrace;HDU&rcub;&lbrace;2516&rcub;&lbrace;取石子游戏&rcub;&lbrace;斐波那契博弈&rcub;

    题意:给定一堆石子,每个人最多取前一个人取石子数的2被,最少取一个,最后取石子的为赢家,求赢家. 思路:斐波那契博弈,这个题的证明过程太精彩了! 一个重要的定理:任何正整数都可以表示为若干个不连续的斐 ...

  5. 【BZOJ-3895】取石子 记忆化搜索 &plus; 博弈

    3895: 取石子 Time Limit: 1 Sec  Memory Limit: 512 MBSubmit: 263  Solved: 127[Submit][Status][Discuss] D ...

  6. Games&colon;取石子游戏(POJ 1067)

    取石子游戏 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 37662   Accepted: 12594 Descripti ...

  7. ACM 取石子(七)

    取石子(七) 时间限制:1000 ms  |  内存限制:65535 KB 难度:1   描述 Yougth和Hrdv玩一个游戏,拿出n个石子摆成一圈,Yougth和Hrdv分别从其中取石子,谁先取完 ...

  8. &lbrack;ACM&lowbar;数学&rsqb; Fibonacci Nim&lpar;另类取石子,2-4组合游戏)

    游戏规则: 有一堆个数为n的石子,游戏双方轮流取石子,满足: 1)先手不能在第一次把所有的石子取完: 2)之后每次可以取的石子数介于1到对手刚取的石子数的2倍之间(包含1和对手刚取的石子数的2倍). ...

  9. nim3取石子游戏 &lpar;威佐夫博弈&rpar;

    http://www.cnblogs.com/jackge/archive/2013/04/22/3034968.html 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有 ...

随机推荐

  1. Oracle Flashback Technologies - 闪回查询

    Oracle Flashback Technologies - 闪回查询 查看表中,某行数据的修改记录 #创建一个表,并插入和修改数据 SQL> create table y3(id )); T ...

  2. PHP null常量和null字节的区别

    在学习isset()时,看到了这句话:“如果已经使用 unset() 释放了一个变量之后,它将不再是 isset().若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE.同 ...

  3. gcc编译器优化给我们带来的麻烦???

    gcc编译器优化给我们带来的麻烦??? 今天看到一个很有趣的程序,如下: ? 1 2 3 4 5 6 7 8 9 int main() {     const int a = 1;     int * ...

  4. &lbrack;编织消息框架&rsqb;&lbrack;设计协议&rsqb;opCode

    OpCode的全称 OpCode(Operation Code) 操作码的意思. OpCode 有几种域组成,不同领域格式组成不同 1.指令号 2.数据范围 3.数据内容 如 {code}{addr ...

  5. oracle修改审计功能

    oracle修改审计功能 如果没有关闭审计功能,审计日志文件默认保存在位置为$ORACLE_BASE/admin/$ORACLE_SID/adump/ 关闭审计:alter system set au ...

  6. &lbrack;javascript&rsqb;multipart&sol;form-data上传格式表单自定义创建

    <!DOCTYPE html> <html> <head> <title></title> </head> <body&g ...

  7. 为chrome设置代理

    1:打开google>setting>proxy  ,点击局域网设置. 2: 设置代理,当使用代理访问不了公司的网络时,需要将代理勾掉,将上面的公司用的网选上.

  8. UEFI与 Legacy BIOS两种启动模式详解

    (1). UEFI启动模式 与 legacy启动模式 legacy启动模式: 就是这么多年来PC一直在使用的启动方式(从MBR中加载启动程序),UEFI BIOS作为一种新的BIOS自然也应该兼容这种 ...

  9. js备忘录2

    JavaScript 的类型分为两类,分别是原始类型和对象类型 其中原始类型中只有数字.字符串和布尔型,和java中的有些不一样 null和undefined不是基本数据类型中的某一种 对象是prop ...

  10. 20145301《网络对抗》shellcode注入&amp&semi;Return-to-libc攻击深入

    20145301<网络对抗>shellcode注入&Return-to-libc攻击深入 Shellcode注入 shellcode是什么? Shellcode是指能完成特殊任务的 ...