fork download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. typedef long long ll;
  5. ll C[2900][2900]={0};
  6.  
  7. void preCompute() {
  8. for(int i=0;i<2900;i++) {
  9. C[i][0]=1;
  10. }
  11. for(int i=1;i<2900;i++) {
  12. for(int j=1;j<=i;j++) {
  13. C[i][j]=(C[i-1][j-1]+C[i-1][j])%2713;
  14. }
  15. }
  16. }
  17.  
  18. vector<ll> convertBase2713(ll num) {
  19. vector<ll> v;
  20. while(num) {
  21. v.push_back(num%2713);
  22. num/=2713;
  23. }
  24. return v;
  25. }
  26.  
  27. ll nCr(ll n,ll r) {
  28. vector<ll> nb=convertBase2713(n);
  29. vector<ll> rb=convertBase2713(r);
  30. ll ans=1;
  31. for(int i=0;i<nb.size() && i<rb.size();i++) {
  32. ans*=C[nb[i]][rb[i]];
  33. ans%=2713;
  34. }
  35. return ans;
  36. }
  37.  
  38.  
  39. int main()
  40. {
  41. preCompute();
  42. ll t;
  43. cin>>t;
  44. while(t--) {
  45. ll n,m;
  46. cin>>n>>m;
  47. ll u=(n*(n-1))/2;
  48. if(m==0 || m>=u) {
  49. cout<<"1\n";
  50. continue;
  51. }
  52. cout<<nCr(u,m)<<'\n';
  53. }
  54. return 0;
  55. }
Success #stdin #stdout 0s 80960KB
stdin
3
3 2
5 0
100 1000
stdout
3
1
2667