Pagini recente » Cod sursa (job #2368810) | Cod sursa (job #1398657) | Cod sursa (job #574965) | Cod sursa (job #620499) | Cod sursa (job #1205013)
#include <fstream>
using namespace std;
ifstream f("pascal.in");
ofstream g("pascal.out");
int dPr[7], rowPr[7], i, j, r, d, nrDiv, rowTmp[7];
int main()
{
f>>r>>d;
for (i=2; i*i<=d; i++) {
while (d%i==0) {
d/=i;
dPr[i]++;
}
}
if (d!=1)
dPr[d]++;
int nr=0;
for (i=2; i<=5; i++) {
nr=i;
while (r >= nr) {
rowPr[i]+=r/nr;
nr*=i;
}
}
int add=0;
for (j=0; j<r/2+1; j++) {
int tmp=(r-j), nr=0;
for (i=2; i<=5; i++) {
nr=i;
rowTmp[i]=rowPr[i];
while (tmp >= nr) {
rowTmp[i]-=tmp/nr;
nr*=i;
}
}
tmp=j;
for (i=2; i<=5; i++) {
nr=i;
while (tmp >= nr) {
rowTmp[i]-=tmp/nr;
nr*=i;
}
}
int ok=1;
for (i=2; i<=5; i++)
if (dPr[i] != 0 && dPr[i] > rowTmp[i])
ok=0;
if (ok==1)
nrDiv++;
if (j==r/2 && ok==1 && r%2==0)
add=1;
}
g<<(nrDiv-add)*2+add;
return 0;
}