Wannafly挑战赛16 A 取石子
Posted tobyw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Wannafly挑战赛16 A 取石子相关的知识,希望对你有一定的参考价值。
题目描述
给出四堆石子,石子数分别为a,b,c,d。规定每次只能从堆顶取走石子,问取走所有石子的方案数。
输入描述:
在一行内读入四个由空格分隔的整数a,b,c,d, 输入均为不超过500的正整数
输出描述:
输出一个整数表示答案,答案对109
+7取模
备注:
输入均为不超过500的正整数【分析】
由于是组合数的问题,可以用插入法来求解
#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 取石子的主要内容,如果未能解决你的问题,请参考以下文章