题目链接:https://nanti.jisuanke.com/t/24208
flag:组合数学
**预处理:1……1e5的阶乘F
**欧拉法:n-x+1的逆元为(n-x+1)^(Mod-2)(快速幂处理)
最终答案为: (x%Mod)*(1/(n-x+1)%Mod)*(F[n]*F[n]%Mod)
#include <iostream>
#include <iomanip>
#include <stdio.h>
#include <queue>
#include <algorithm>
#include <string.h>
#include <vector>
#define llt long long
#define Size 100100
using namespace std;
const llt Mod=1e9+7;
llt F[Size];
llt Eure(llt x,llt a){
if(a==0)return 1;
if(a==1)return x;
llt t=Eure(x,a/2);
if(a%2==0)return t*t%Mod;
return t*t%Mod*x%Mod;
}
void init(){
F[0]=1;
for(int i=1;i<=100000;++i)
F[i]=F[i-1]*i%Mod;
}
int main()
{
init();
int T;cin>>T;
while(T--){
llt n,x;
scanf("%lld%lld",&n,&x);
printf("%lld\n",x*Eure(n-x+1,Mod-2)%Mod*F[n]%Mod*F[n]%Mod);
}
return 0;
}