计算(calc)

版权声明:不念过去,不畏未来,一切都是过眼云烟。 https://blog.csdn.net/qq_34531807/article/details/82945468

时间限制: 1 Sec 内存限制: 512 MB


题解
可以找规律,其实我也不会不会推。
Code:

#include<bits/stdc++.h>
#define ll long long
using namespace std;
int n,m,a[2005];ll ans;
const int mod=1e9+7;
ll power(int a,int b)
{
	ll ans=1,p=a;
	while(b)
	{
		if(b&1)ans=ans*p%mod;
		p=p*p%mod;
		b>>=1;
	}
	return ans;
}
int main()
{
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;i++)scanf("%d",&a[i]);
	for(int i=1;i<=m;i++)
	{
		ll sum=1;
		for(int j=0;j<i;j++)
			sum=sum*power(i-j+1,a[j+1]-a[j])%mod;
		ans=(ans+sum)%mod;
	}
	printf("%lld\n",(ans-m+mod)%mod);
}

猜你喜欢

转载自blog.csdn.net/qq_34531807/article/details/82945468