社区讨论

求调悬关

P4071[SDOI2016] 排列计数参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mii6wimd
此快照首次捕获于
2025/11/28 09:34
3 个月前
此快照最后确认于
2025/11/28 09:38
3 个月前
查看原帖
rt,样例全输出0
CPP
#include<bits/stdc++.h>
#define int long long
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
using namespace std;
const int maxn=1e6+5,mod=1e9+7;
int t,n,m,fac[maxn],invf[maxn],s[maxn];
int qpow(int a,int b){
	int res=1;
	while(b){
		if(b&1)res=res*a%mod;
		a=a*a%mod;
		b>>=1;
	}
	return res;
}
signed main(){
	IOS
	fac[0]=1;
	for(int i=1;i<=maxn-5;i++)fac[i]=fac[i-1]*i%mod;
	invf[maxn-5]=qpow(fac[maxn-5],mod-2);
	for(int i=maxn-4;i>=0;i--)invf[i]=invf[i+1]*(i+1)%mod;
	s[0]=1;
	for(int i=1;i<=maxn-5;i++)s[i]=(s[i-1]+(i&1?-1:1)*invf[i]+mod)%mod;
	cin>>t;
	while(t--){
		cin>>n>>m;
		cout<<(fac[n]*invf[m]%mod*s[n-m]%mod)<<"\n";
	}
	return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...