Advertisement
Guest User

Untitled

a guest
Sep 23rd, 2018
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.95 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. long long fact(long long n)
  6. {
  7. long long result = 1;
  8. for (size_t i = 2; i <= n; i++)
  9. {
  10. result *= i;
  11. }
  12.  
  13. return result;
  14. }
  15. long long combination(long long n, long long k)
  16. {
  17. return (fact(n)) / (fact(k)*fact(n - k));
  18. }
  19.  
  20. long long allWays(int n, int k, int l)
  21. {
  22. long* result = new long[l];
  23.  
  24. for (size_t i = 0; i < l; i++)
  25. {
  26. result[i] = n;
  27. }
  28.  
  29. for (size_t i = 0; i < l; i++)
  30. {
  31. for (size_t j = 1; j <= k; j++)
  32. {
  33. if (i+j < l)
  34. {
  35. result[i + j]--;
  36. }
  37. }
  38. }
  39.  
  40. long long mainResult = 1;
  41.  
  42. for (size_t i = 0; i < l; i++)
  43. {
  44. mainResult *= result[i];
  45. }
  46.  
  47. return mainResult;
  48. }
  49.  
  50. int main()
  51. {
  52. int n, k, l;
  53.  
  54. cin >> n >> k >> l;
  55.  
  56. long long result = allWays(n, k, l);
  57.  
  58. for (size_t i = 1; i < n; ++i)
  59. {
  60. (i % 2 == 0) ? result += combination(n,i)*allWays(n - i, k, l) : result -= combination(n, i)*allWays(n - i, k, l);
  61. }
  62.  
  63.  
  64. cout << result << endl;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement