fork download
  1. #include<bits/stdc++.h>
  2. #define SI(n) scanf("%d",&n)
  3. #define SII(a,b) scanf("%d%d",&a,&b)
  4. #define SIII(a,b,c) scanf("%d%d%d",&a,&b,&c)
  5. #define SDD(a,b) scanf("%lf%lf",&a,&b)
  6. #define SLL(n) scanf("%lld",&n)
  7. #define SLLLL(n,c) scanf("%lld%lld",&n,&c)
  8. #define SC(r) scanf("%c",&r)
  9. #define SS(r) scanf("%s",r)
  10. #define REPA(i,a,n) for(int i=a;i<n;i++)
  11. #define REP(i,n) for(ll i=0;i<n;i++)
  12. #define PI(n) printf("%d\n",n)
  13. #define PD(n) printf("%.9lf\n",n)
  14. #define PDD(n,c) printf("%lf %lf\n",n,c)
  15. #define PLL(n) printf("%lld\n",n)
  16. #define PC(n) printf("%c\n",n)
  17. #define PS(n) printf("%s\n",n)
  18. #define ll long long
  19. #define M 10000007
  20. using namespace std;
  21.  
  22. int arr[110][110];
  23.  
  24. int ncr(int n,int r)
  25. {
  26. if(arr[n][r]!=-1)
  27. return arr[n][r];
  28. else if(n==r)
  29. return arr[n][r]=1;
  30. else if(n-r==1)
  31. return arr[n][r]=n;
  32. else
  33. return arr[n][r]=(ncr(n-1,r-1)+ncr(n-1,r))%M;
  34. }
  35.  
  36. int main()
  37. {
  38.  
  39. int n,r;
  40. SII(n,r);
  41. if(r>n)
  42. printf("-1\n");
  43. else
  44. {
  45. REP(i,n+1)
  46. REP(j,n+1)
  47. arr[i][j]=-1;
  48. PI(ncr(n-1,r-1));
  49. }
  50. return 0;
  51. }
Success #stdin #stdout 0s 3144KB
stdin
100 50
stdout
9391200