Advertisement
ke_timofeeva7

сочетания для больших чисел

Oct 11th, 2021
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.84 KB | None | 0 0
  1. /*
  2.  ________    _______   ______    _______   ________
  3. /_______/\ /_______/\ /_____/\ /_______/\ /_______/\
  4. \::: _  \ \\::: _  \ \\:::_ \ \\::: _  \ \\::: _  \ \
  5.  \::(_)  \ \\::(_)  \/_\:\ \ \ \\::(_)  \/_\::(_)  \ \
  6.   \::   \ \\::  _  \ \\:\ \ \ \\::  _  \ \\::   \ \
  7.    \:.\ \  \ \\::(_)  \ \\:\_\ \ \\::(_)  \ \\:.\ \  \ \
  8.     \__\/\__\/ \_______\/ \_____\/ \_______\/ \__\/\__\/
  9.  
  10. */
  11.  
  12. #include <iostream>
  13. #include <string>
  14. #include <sstream>
  15. #include <vector>
  16. #include <cmath>
  17. #include <algorithm>
  18. #include <memory.h>
  19. #include <stdio.h>
  20. #include <stack>
  21. #include <deque>
  22. #include <queue>
  23. #include <set>
  24. #include <iterator>
  25. #include <map>
  26. #include <iomanip>
  27. #include <unordered_set>
  28. #define int long long
  29. #define pb push_back
  30. #define double long double
  31. #define endl "\n"
  32. #define un unsigned
  33. #define INF 1000000009
  34. #define pii pair<int, int>
  35. #define all(v) v.begin(), v.end()
  36. using namespace std;
  37.  
  38. const int N = 1000000;
  39. const int MOD = 1e9 + 7;
  40.  
  41. int bin_pow(int n, int i)
  42. {
  43.     if (i == 0)
  44.     {
  45.         return 1;
  46.     }
  47.  
  48.     if (i == 1)
  49.     {
  50.         return n;
  51.     }
  52.  
  53.     if (i % 2 == 0)
  54.     {
  55.         return (bin_pow((n * n) % MOD, i / 2)) % MOD;
  56.     }
  57.     else
  58.     {
  59.         return (n * bin_pow(n, i - 1)) % MOD;
  60.     }
  61. }
  62.  
  63. signed main()
  64. {
  65.     ios_base::sync_with_stdio();
  66.     cin.tie(0);
  67.     cout.tie(0);
  68.  
  69.     int n, k;
  70.     cin >> n >> k;
  71.  
  72.     n--;
  73.     k--;
  74.  
  75.     n += k;
  76.  
  77.     int ans = 1;
  78.  
  79.     vector<int> fac(n + 5), rfac(n + 5);
  80.  
  81.     fac[0] = 1;
  82.  
  83.     for (int i = 1; i <= 1 + n; i++)
  84.     {
  85.         fac[i] = fac[i - 1] * i;
  86.         fac[i] %= MOD;
  87.     }
  88.  
  89.     rfac[n] = bin_pow(fac[n], MOD - 2);
  90.     rfac[1] = 1;
  91.  
  92.     for (int i = n - 1; i >= 0; i--)
  93.     {
  94.         rfac[i] = (rfac[i + 1] * (i + 1)) % MOD;
  95.     }
  96.  
  97.     cout << ((fac[n] * rfac[k]) % MOD * rfac[n - k]) % MOD;
  98.     return 0;
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement