886. 求组合数 II(模板)
作者:互联网
数据范围较大, a,b都是1e5
直接根据公式预处理
1/i就是求i的逆元(逆元求法:mod为质数,逆元就是 i^(mod-2)%mod )
O(N*logN)
import java.util.Scanner; public class Main{ static final int N=100005; static final int mod=(int)1e9+7; static long fact[]=new long[N]; static long infact[]=new long[N]; static long quick_pow(long a,long b){ long res=1; while(b>0){ if((b&1)==1) res=res*a%mod; a=a*a%mod; b>>=1; } return res%mod; } public static void main(String[] args) { Scanner scan=new Scanner(System.in); fact[0]=infact[0]=1; for(int i=1;i<N;i++){ fact[i]=fact[i-1]*i%mod; infact[i]=infact[i-1]*quick_pow(i,mod-2)%mod; } int t=scan.nextInt(); while(t-->0){ int a=scan.nextInt(); int b=scan.nextInt(); System.out.println(fact[a]*infact[a-b]%mod*infact[b]%mod); } } }
标签:886,int,res,long,II,static,infact,模板,mod 来源: https://blog.csdn.net/qq_45534061/article/details/113801360