Cod sursa(job #322373)

Utilizator alexandru92alexandru alexandru92 Data 8 iunie 2009 18:09:27
Problema Pascal Scor 20
Compilator c Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <stdio.h>
long long n,d,m,ijfact,ifact,nfact,number,nr;
long long fact(long long n)
{   long long i,nr=1;
    for(i=2;i<=n;++i) nr*=i;
    return nr;
}
int main()
{register long long i;
    freopen("pascal.in","rt",stdin);
    freopen("pascal.out","wt",stdout);
    scanf("%lld%lld",&n,&d);
    if(n%2) m=(n+1)/2;
    else m=n/2+1;
    ijfact=nfact=fact(n);
    for(ifact=1,i=1;i<m;++i)
       {
           ifact*=i;
           ijfact/=(n-i+1);
           number=nfact/(ifact*ijfact);
           if(i==m-1)
           { if(number%d==0) ++nr;
           }else  if(number%d==0) nr+=2;
       }
    printf("%lld",nr);
    return 0;
}