码迷,mamicode.com
首页 > 其他好文 > 详细

Wannafly挑战赛16 A 取石子

时间:2018-05-26 11:42:31      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:分析   ann   wan   print   res   题目   max   margin   ++   

题目描述

给出四堆石子,石子数分别为a,b,c,d。规定每次只能从堆顶取走石子,问取走所有石子的方案数。

输入描述:

在一行内读入四个由空格分隔的整数a,b,c,d, 输入均为不超过500的正整数

输出描述:

输出一个整数表示答案,答案对10
9
+7取模
示例1
输入 复制
3 5 4 2
输出 复制
2522520

备注:

输入均为不超过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 取石子

标签:分析   ann   wan   print   res   题目   max   margin   ++   

原文地址:https://www.cnblogs.com/tobyw/p/9092103.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!