全部RE????
  • 板块学术版
  • 楼主19ty53
  • 当前回复4
  • 已保存回复4
  • 发布时间2021/8/11 14:11
  • 上次更新2023/11/4 11:03:12
查看原帖
全部RE????
316486
19ty53楼主2021/8/11 14:11
#include<iostream>
#include<algorithm>
#include<cstdio>
#define mod 1000000007
#define M 100005
using namespace std;
int T;
long long fac[M],dp[M],infac[M];
inline long long know(long long a,long long b){
	register long long ans=1,base=a;
	while(b){
		if(b&1)ans=(ans*base)%mod;
		base=(base*base)%mod;
		b>>=1;
	}
	return ans%mod;
}
inline long long C(long long n,long long m){
	return fac[n]*infac[m]%mod*infac[n-m]%mod;
}
void init(){
	fac[0]=fac[1]=1;
	dp[0]=dp[1]=0;dp[2]=1;
	for(register int i=2;i<=M;++i)fac[i]=(fac[i-1]*i)%mod;
	infac[M-1]=know(fac[M-1],mod-2);
	for(register int i=M-2;i>=0;--i)infac[i]=infac[i+1]*(i+1)%mod;
	for(register int i=3;i<=M;++i)dp[i]=((i-1)*dp[i-1]+(i-1)*dp[i-2])%mod;
}
int main(){
	init();
	register long long n,m;
	scanf("%d",&T);
	while(T--){
		scanf("%d%d",&n,&m);
		printf("%lld\n",dp[n-m]*C(n,m)%mod);
	}
}
2021/8/11 14:11
加载中...