Java
快速幂、预处理、费马小定理
import java.util.Scanner;
public class Main {
static int mod=1000000007;
static long[] fact=new long[500001];//n!
static long[] invFact=new long[500001];//(n!)^-1
static{
fact[0]=1;
fact[1]=1;
for(int i=2;i<500001;i++){
fact[i]=(fact[i-1]*i)%mod;
}
invFact[500000]=pow(fact[500000],mod-2);
for(int i=500000-1;i>=0;i--){
invFact[i]=(invFact[i+1]*(i+1))%mod;
}
}
//快速幂
public static long pow(long a,long b){
long res=1;
a=a%mod;
while(b>0){
if((b&1)==1){
res=(res*a)%mod;
}
a=(a*a)%mod;
b/=2;
}
return res;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int T=in.nextInt();
while(T-->0){
int n=in.nextInt();
int m=in.nextInt();
long ans=(((fact[m]*invFact[n])%mod)*invFact[m-n])%mod;
System.out.println(ans);
}
}
}

京公网安备 11010502036488号