社区讨论
求调悬关
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 条回复,欢迎继续交流。
正在加载回复...