Pagini recente » Cod sursa (job #1383738) | Cod sursa (job #36336) | Cod sursa (job #1334287) | Cod sursa (job #434882) | Cod sursa (job #3137738)
#include <bits/stdc++.h>
using namespace std;
ifstream in ("pascal.in");
ofstream out ("pascal.out");
int get (int n, int k)
{
int ans = 0;
while (n)
ans += n / k, n /= k;
return ans;
}
int main()
{
int n, d;
in >> n >> d;
int val = 1; /// C(n, 0)
/**
C(n, k) * x = C(n, k+1)
f[n] / (f[k] * f[n-k]) * x = f[n] / (f[k+1] * f[n-k-1])
x = f[k] * f[n-k] / (f[k+1] * f[n-k-1]) = (n-k) / (k+1)
**/
int ans = 0;
if (d == 2)
{
int a[1234567890];
int cnt = 0;
for (int i=0; i<n; i++)
{
cnt += get(n - i, 2) - get(i + 1, 2);
ans += !!cnt;
}
out << ans;
}
else if (d == 3)
{
int cnt = 0;
for (int i=0; i<n; i++)
{
cnt += get(n - i, 3) - get(i + 1, 3);
ans += !!cnt;
}
out << ans;
}
else if (d == 5)
{
int cnt = 0;
for (int i=0; i<n; i++)
{
cnt += get(n - i, 5) - get(i + 1, 5);
ans += !!cnt;
}
out << ans;
}
else if (d == 4)
{
int cnt = 0;
for (int i=0; i<n; i++)
{
cnt += get(n - i, 2) - get(i + 1, 2);
ans += !!(cnt > 1);
}
out << ans;
}
else
{
int cnt2 = 0, cnt3 = 0;
for (int i=0; i<n; i++)
{
cnt2 += get(n - i, 2) - get(i + 1, 2);
cnt3 += get(n - i, 3) - get(i + 1, 3);
ans += !!(cnt2 && cnt3);
}
out << ans;
}
return 0;
}