Cod sursa(job #1205942)

Utilizator sddddgjdZloteanu Anastasia sddddgjd Data 8 iulie 2014 15:01:10
Problema Pascal Scor 20
Compilator c Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<stdio.h>
int fact[6];
char cateFact[5000001][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,i;
    while(nr*nr<=d){
        while(d%nr==0)
            d/=nr,fact[nr]++;
        nr++;
    }
    if(d!=1)
        fact[d]++;
    for(i=1;i<=r;i++){
        int j,c=i;
        for(j=2;j<=5;j++){
            cateFact[i][j]=cateFact[i-1][j];
            while(fact[j]!=0&&c%j==0)
               c/=j,cateFact[i][j]++;
        }
    }
    int sol=0,ok;
    for(i=0;i<=r/2;i++){
        ok=1;
        for(j=2;j<=5;j++)
            if(cateFact[r][j]-cateFact[r-i][j]-cateFact[i][j]<fact[j])
                ok=0;
        if(ok)
            sol++;
    }
    if(ok)
        sol--;
    fprintf(fout,"%d",sol*2+ok);
    return 0;
}