0pts,思路正确,求调
查看原帖
0pts,思路正确,求调
930076
mmdxmakioi楼主2023/3/3 14:47
#include<cstdio>
#define int long long
const int MOD = 1e9+7;
int n,m,k,q;
int ksm(int a,int b)
{
	int rt = 1;
	while(b != 0)
	{
		if(b%2==1)
		{
			rt *= a;
			rt %= MOD;
		}
		a *= a;
		a %= MOD;
		b /= 2;
	}
	return rt;
}
int fac[500001];

signed main()
{
	scanf("%lld%lld%lld%lld",&n,&m,&k,&q);
	q %= MOD;
	int i,j;
	fac[0] = 1;
	for(i=1;i<=n;i++)
	{
		fac[i] = fac[i-1]*i;
		fac[i] %= MOD;
	}
	int res = 0;
	for(i=1;i<=m+1;i++)
	{
		int x;
		scanf("%lld",&x);
		res += ksm(q,m-i+1)*x;
		res %= MOD;
	}
	res *= fac[n];
	res %= MOD;
	res *= ksm(fac[n-k],MOD-2);
	res %= MOD;
	res *= ksm(fac[k],MOD-2);
	res %= MOD;
	printf("%lld",res);
}

害怕,不知道哪里写炸了

2023/3/3 14:47
加载中...