Pagini recente » Istoria paginii runda/oni_10_1/clasament | Cod sursa (job #2646095) | Cod sursa (job #1799183) | Cod sursa (job #102679) | Cod sursa (job #471366)
Cod sursa(job #471366)
#include <cstdio>
int n, D;
int p[128];
int x, k, ret;
void doit ()
{
x = n - k;
int key[] = {2, 3, 5};
for (int pp = 0; pp < 3; ++pp)
{
int i = key[pp];
while (x % i == 0)
x /= i,
++p[i];
}
x = k + 1;
for (int pp = 0; pp < 3; ++pp)
{
int i = key[pp];
while (x % i == 0)
x /= i,
--p[i];
}
switch (D)
{
case 2 : ret += (p[2] >= 1); break;
case 3 : ret += (p[3] >= 1); break;
case 4 : ret += (p[2] >= 2); break;
case 5 : ret += (p[5] >= 1); break;
case 6 : ret += (p[2] >= 1 && p[3] >= 1); break;
}
}
int main ()
{
freopen ("pascal.in", "r", stdin);
freopen ("pascal.out", "w",stdout);
scanf ("%d%d", &n, &D);
for (k = 0; k < ((n + 1) / 2) - 1; ++k)
doit ();
ret *= 2;
if (n % 2 == 0)
doit ();
printf ("%d\n", ret);
return 0;
}