Pagini recente » Cod sursa (job #2350735) | Cod sursa (job #2107334) | Cod sursa (job #2597908) | Cod sursa (job #328018) | Cod sursa (job #1563538)
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
int R,D,num,sol;
int fact[10],cnt[10];
int main()
{
freopen("pascal.in","r",stdin);
freopen("pascal.out","w",stdout);
scanf("%d %d",&R,&D);
for (int i = 2;D > 1;i++)
if (D % i == 0)
{
num++;
fact[num] = i;
for (;D % i == 0;cnt[num] += D / i,D /= i);
}
for (int i = 0;i <= R;i++)
{
int x = R,y = R - i,z = i,aux[10];
bool ok = 1;
memset(aux,0,sizeof(aux));
for (int j = 1;j <= num;j++)
{
int val = x;
for (;val;aux[j] += val / fact[j],val /= fact[j]);
}
for (int j = 1;j <= num && y;j++)
{
int val = y;
for (;val;aux[j] -= val / fact[j],val /= fact[j]);
}
for (int j = 1;j <= num && z;j++)
{
int val = z;
for (;val;aux[j] -= val / fact[j],val /= fact[j]);
}
for (int j = 1;j <= num;j++)
if (cnt[j] > aux[j])
{
ok = 0;
break;
}
sol += ok;
}
printf("%d\n",sol);
return 0;
}