Pagini recente » Cod sursa (job #2048810) | Cod sursa (job #2857685) | Cod sursa (job #340324) | Cod sursa (job #2885857) | Cod sursa (job #2217019)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("sirul2.in");
ofstream fout("sirul2.out");
const int mod = 20173333;
int p, n, k, fact[100005], dp[100005];
int logpow(int a, int b) {
int ans = 1, d = a;
while (b) {
if (b & 1)
ans = 1LL * ans * d % mod;
b >>= 1;
d = 1LL * d * d % mod;
}
return ans;
}
int comb (int n, int k) {
return 1LL * fact[n] * logpow(fact[k], mod - 2) % mod * logpow(fact[n - k], mod - 2) % mod;
}
int main()
{
fin >> p >> n >> k;
if (p == 1) {
fact[0] = 1;
for (int i = 1; i <= n; i++)
fact[i] = 1LL * fact[i - 1] * i % mod;
fout << comb(n - 1, k - 1);
}
else {
dp[0] = dp[1] =1;
for (int i = 2; i <= n; i++) {
dp[i] = dp[i - 1] * 2 % mod;
if (i >= k + 1)
dp[i] = (dp[i] - dp[i - (k + 1)] + mod) % mod;
}
fout << dp[n];
}
return 0;
}