Pagini recente » Cod sursa (job #2894336) | Cod sursa (job #2825031) | Cod sursa (job #1427055) | Cod sursa (job #1011513) | Cod sursa (job #2769128)
#include <cstdio>
int R, D,
fp[3], ex[3], nf,
ed[3];
void descfp()
{
switch(D)
{
case 2:
case 3:
case 5:
nf = 1;
fp[1] = D;
ex[1] = 1;
break;
case 4:
nf = 1;
fp[1] = 2;
ex[1] = 2;
break;
case 6:
nf = 2;
fp[1] = 2;
fp[2] = 3;
ex[1] = ex[2] = 1;
}
}
int expp(int n, int p)
{
int e = 0;
while(n % p == 0)
{
e++;
n /= p;
}
return e;
}
int divid(int k)
{
int ok = 1;
for(int i = 1; i <= nf; i++)
{
ed[i] += expp(R - k + 1, fp[i]) - expp(k, fp[i]);
if(ed[i] < ex[i])
ok = 0;
}
return ok;
}
int main()
{
freopen("pascal.in", "r", stdin);
freopen("pascal.out", "w", stdout);
int nrd = 0;
scanf("%i %i", &R, &D);
if(R >= 2)
{
descfp();
int r2 = (R + 1) / 2;
for(int k = 1; k < r2; k++)
nrd += divid(k);
nrd *= 2;
if(R % 2 == 0)
nrd += divid(r2);
}
printf("%i", nrd);
fclose(stdin);
fclose(stdout);
return 0;
}