Pagini recente » Cod sursa (job #2119496) | Cod sursa (job #2879776) | Cod sursa (job #722303) | Cod sursa (job #2460485) | Cod sursa (job #1205438)
#include<stdio.h>
int fact[6],cateFact[6],cop[6];
int main()
{
FILE *fin,*fout;
fin=fopen("pascal.in","r");
fout=fopen("pascal.out","w");
int r,d;
fscanf(fin,"%d%d",&r,&d);
int cont=0,nr=2,j;
while(nr*nr<=d){
while(d%nr==0)
d/=nr,fact[nr]++;
nr++;
}
if(d!=1)
fact[d]++;
int c=r,i;
for(i=1;i<=5;i++)
while(fact[i]!=0&&c%i==0)
c/=i,cateFact[i]++;
int sol=0,special=0,ok;
for(i=1;i<=r/2+1;i++)
{
int c=r-i;
for(j=1;j<=5;j++)
cop[j]=cateFact[j];
for(j=1;j<=5;j++)
while(fact[j]!=0&&c%j==0)
c/=j,cateFact[j]--;
c=i;
for(j=1;j<=5;j++)
while(fact[j]!=0&&c%j==0)
c/=j,cateFact[j]--;
ok=1;
for(j=1;j<=5;j++){
if(cateFact[j]<cop[j])
ok=0;
cateFact[j]=cop[j];
}
if(ok)
sol++;
}
if(ok)
sol--;
fprintf(fout,"%d",sol*2+ok);
return 0;
}