Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- long long fact(long long n)
- {
- long long result = 1;
- for (size_t i = 2; i <= n; i++)
- {
- result *= i;
- }
- return result;
- }
- long long combination(long long n, long long k)
- {
- return (fact(n)) / (fact(k)*fact(n - k));
- }
- long long allWays(int n, int k, int l)
- {
- long* result = new long[l];
- for (size_t i = 0; i < l; i++)
- {
- result[i] = n;
- }
- for (size_t i = 0; i < l; i++)
- {
- for (size_t j = 1; j <= k; j++)
- {
- if (i+j < l)
- {
- result[i + j]--;
- }
- }
- }
- long long mainResult = 1;
- for (size_t i = 0; i < l; i++)
- {
- mainResult *= result[i];
- }
- return mainResult;
- }
- int main()
- {
- int n, k, l;
- cin >> n >> k >> l;
- long long result = allWays(n, k, l);
- for (size_t i = 1; i < n; ++i)
- {
- (i % 2 == 0) ? result += combination(n,i)*allWays(n - i, k, l) : result -= combination(n, i)*allWays(n - i, k, l);
- }
- cout << result << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement