Pagini recente » Cod sursa (job #2301735) | Cod sursa (job #3280197) | Cod sursa (job #688531) | Cod sursa (job #1664576) | Cod sursa (job #2107840)
#include <bits/stdc++.h>
using namespace std;
int calcExp(int n, int d)
{
int rez = 0;
while(n % d == 0)
rez++,
n /= d;
return rez;
}
int nr[10];
int main()
{
freopen("pascal.in", "r", stdin);
freopen("pascal.out", "w", stdout);
int r, d;
int v[10], pv[10], lv = 0;
scanf("%d%d", &r, &d);
for(int i = 2; d != 1; i++)
{
if(d % i == 0)
{
v[lv] = i;
pv[lv] = 0;
while(d % i == 0)
d /= i,
pv[lv]++;
lv++;
}
}
int rez = 0, ok = 0;
for(int i = 1; i < (r + 1) / 2; i++)
{
ok = 0;
for(int j = 0; j < lv; j++)
{
nr[j] += calcExp(r - i + 1, v[j]);
nr[j] -= calcExp(i, v[j]);
if(nr[j] >= pv[j])
ok++;
}
if(ok == lv)
rez++;
}
rez *= 2;
if(r % 2 == 0)
{
ok = 0;
for(int j = 0; j < lv; j++)
{
nr[j] += calcExp(r / 2 + 1, v[j]);
nr[j] -= calcExp(r / 2, v[j]);
if(nr[j] >= pv[j])
ok++;
}
if(ok == lv)
rez++;
}
printf("%d", rez);
return 0;
}