怪了
查看原帖
怪了
310801
uid_310801楼主2022/11/29 22:37
#include<bits/stdc++.h>
using namespace std;
//#define int long long
typedef long long ll;
const ll maxN=1e7,N=1e7+10,mod=1e9+9;
ll qpow(ll a,ll b){
	ll ans=1,base=a;
	while(b){
		if(b&1)	ans=ans*base%mod;
		base=base*base%mod;
		b>>=1;
	}
	return a;
}
ll T,n,k,inv[N]={0,1},fac[N]={1};
signed main(){
	scanf("%lld",&T);
	for(int i=1;i<=maxN;i++){
		fac[i]=fac[i-1]*i%mod;
	}
	for(int i=2;i<=maxN;i++){
		inv[i]=(mod-mod/i)*inv[mod%i]%mod;
	}
	for(int i=2;i<=maxN;i++){
		inv[i]=(inv[i-1]+inv[i])%mod;
	}
	while(T--){
		scanf("%lld %lld",&n,&k);
		ll ans=(inv[n-1]-inv[k-1]+mod)%mod;
		if(k!=1)	ans++;
		printf("%lld\n",ans*fac[n-1]%mod);
	}
	return 0;
}
/*
exSample:

*/

这样一份代码交上去会显示

g++: 编译器内部错误:File size limit exceeded signal terminated program as 请提交一份完整的错误报告, 如有可能请附上经预处理后的源文件。 参阅 https://gcc.gnu.org/bugs/ 以获取指示。

但是我不知道为什么两个1e7的数组会导致MLE?

2022/11/29 22:37
加载中...