fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int MAXN = 100000;
  4. const int mod = 1e9+7;
  5. using ll = long long;
  6. ll fact[MAXN + 1] , ifact[MAXN + 1];
  7.  
  8. ll power(ll base , ll exp){
  9. int res = 1;
  10. while(exp>0){
  11. if(exp%2 == 1)res = (res*base)%mod;
  12. base = (base*base)%mod;
  13. exp/=2;
  14. }
  15. return res;
  16. }
  17.  
  18. void pre(){
  19. fact[0]=ifact[0]=1;
  20. for(int i = 1 ; i<=MAXN ;i++){
  21. fact[i] = (fact[i-1]*i)%mod;
  22. }
  23. ifact[MAXN] = power(fact[MAXN],mod-2);
  24. for(int i = MAXN - 1; i>=0 ;i--){
  25. ifact[i] = (ifact[i+1]*(i+1))%mod;
  26. }
  27. }
  28.  
  29. ll nCr(int n,int r){
  30. if(r>n || r<0)return 0;
  31. return (((fact[n]*ifact[r])%mod)*ifact[n-r])%mod;
  32. }
  33. int main() {
  34. pre();
  35. int t,n,r;
  36. cin>>t;
  37. while(t--){
  38. cin>>n>>r;
  39. cout<<nCr(n,r)<<endl;
  40. }
  41. return 0;
  42. }
Success #stdin #stdout 0.01s 5328KB
stdin
1
5 2
stdout
10