Cod sursa(job #1205438)

Utilizator sddddgjdZloteanu Anastasia sddddgjd Data 6 iulie 2014 16:09:07
Problema Pascal Scor 20
Compilator c Status done
Runda Arhiva de probleme Marime 1.07 kb
#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;
}