关于30分情况
查看原帖
关于30分情况
511959
_Weslie_楼主2024/3/2 10:11

rt,我使用这份代码是 30 分:

#include<iostream>
using namespace std;
long long C[1005][1005];
int T,n,m,x[1005];
long long ans=1,sum=0;
int main(){
	for(int i=0;i<=1000;i++){
		for(int j=0;j<=i;j++){
			if(j==0)C[i][j]=1;
			else C[i][j]=(C[i-1][j]+C[i-1][j-1])%1000000007;
		//	cout<<C[i][j]<<' ';
		}
	//	cout<<endl;
	} 
	cin>>T;
	while(T--){
		cin>>n>>m;
		ans=1;sum=0;
		for(int i=1;i<=m;i++){
			cin>>x[i];
			sum+=x[i];
		}
		if(sum>n)n++;
		for(int i=1;i<=m;i++){
			ans=(1ll*ans*C[n][x[i]])%1000000007;
			n-=x[i];
		}
		cout<<ans%1000000007<<endl;
	}
	return 0;
}

但是当我把数组大小开到 2000,它就过了。

请问这是因为代码特性还是因为测试点有大于数据范围的?

2024/3/2 10:11
加载中...