Cod sursa(job #1348464)

Utilizator AnaRaduAna-Maria Radu AnaRadu Data 19 februarie 2015 18:33:07
Problema Pascal Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <stdio.h>
int fact(int k,int n){
    int put=0;
    while(n/k>=1){
        put+=n/k;
        k*=k;
    }
return put;
}
int main(){
    freopen("pascal.in","r",stdin);
    freopen("pascal.out","w",stdout);
    int i,j,k,cate=0,p1,p2,p3,n;
    scanf("%d%d",&i,&k);
    if(i%2==0)
        n=i+2;
    else
        n++;
    if(k==2||k==3||k==5){
        p1=fact(k,i);
        for(j=2;j<=n/2;j++){
            p2=fact(k,j);
            p3=fact(k,i-j);
            if(p1-p2-p3>=1)
                cate++;
        }
    }
    if(k==4){
        k=2;
        p1=fact(k,i);
        for(j=2;j<=n/2;j++){
            p2=fact(k,j);
            p3=fact(k,i-j);
            if(p1-p2-p3>=2)
                cate++;
        }
    }
    if(k==6){
        for(j=2;j<=n/2;j++){
            p1=fact(3,i);
            p2=fact(3,j);
            p3=fact(3,i-j);
            if(p1-p2-p3>=1){
                p1=fact(2,i);
                p2=fact(2,j);
                p3=fact(2,i-j);
                if(p1-p2-p3>=1)
                    cate++;
            }
        }
    }
    cate*=2;
    if(i%2==0)
        cate--;
    printf("%d",cate);
return 0;
}