K.论演员的自我修养---组合数的运用路径计数

论演员的自我修养

Time Limit 1000MS
Memory Limit 256MB

题目链接https://csustacm.fun/problem/1102

K.论演员的自我修养---组合数的运用路径计数_第1张图片

K.论演员的自我修养---组合数的运用路径计数_第2张图片


这题和之前武大的校赛的一题题比较像,所以比赛的时候很快就A了。。。

武大校赛的路径计数https://blog.csdn.net/qq_43906000/article/details/89085780

这题没有限制路径的左右走法,所以就不用扣去不合法的路经数了。
而同样我们还是可以找规律:

K.论演员的自我修养---组合数的运用路径计数_第3张图片
对于一般的路径计数来讲我们是从零开始答案为1的,而这里是2开始,那么我们只需要在一般的路径计数上吧x坐标和y坐标-2就行了。

一般的路径总数:C(x+y,x),那么这里的就是C(x+y-4,x-2)了。

以下是AC代码:

#include 
using namespace std;
#define ll long long
const int mac=1e5+5;
const int mod=1e9+7;
ll f[mac*2],inv[mac*2];
ll C(ll x,ll y);
int main()
{
	ll t,n,m,x,y;
	inv[1]=1;
	for (int i=2; i<=mac; i++){
		inv[i]=(mod-mod/i)*inv[mod%i]%mod;
	}   
	scanf ("%lld%lld%lld%lld",&m,&n,&x,&y);//m
	ll ans=C(x+y-4,x-2)%mod;
	printf ("%lld\n",ans);
	return 0;
}
ll C(ll x,ll y)
{
	memset(f,0,sizeof(f));
	f[0]=1;
	for (int i=1; i<=y; i++){
		f[i]=(f[i-1]*((x-i+1)*(inv[i]%mod)%mod))%mod;//求C(n+m-1,i); 
	}
	return f[y];
}

你可能感兴趣的:(#,2019长理校赛,#,基本数学定理运用)