Cod sursa(job #1297070)

Utilizator ade_tomiEnache Adelina ade_tomi Data 21 decembrie 2014 17:40:53
Problema Pascal Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<stdio.h>
int calc(int n , int p)
{
    int put=p,ans=0;
    while(n/put>0){
        ans+=n/put;
        put*=p;
    }
    return ans;
}
int fact[5000004][3],i,j,d,ok,sol,v[3],r,nr;
int main()
{
    freopen("pascal.in","r",stdin);
    freopen("pascal.out","w",stdout);
    scanf("%d%d",&r,&d);
    if(d==4||d==6)
    {
        nr=2;
        v[1]=2;
        v[2]=d/2;
    }
    else
    {
        nr=1;
        v[1]=d;
    }
    for(j=1;j<=nr;j++)
        fact[r][j]=calc(r,v[j]);
    for(i=1;i<(r+2)/2;i++)
    {
        ok=0;
        for(j=1;j<=nr;j++)
        {
            if(fact[i][j]==0)
                fact[i][j]=calc(i,v[j]);
            if(fact[r-i][j]==0)
                fact[r-i][j]=calc(r-i,v[j]);
            if(fact[r][j]-fact[i][j]-fact[r-i][j]<=0)
                ok=1;
        }
        if(ok==0)
            sol++;

    }
    sol*=2;
    if(r%2==0)
        sol--;
    printf("%d",sol);
    return 0;

}