Cod sursa(job #1348520)

Utilizator AnaRaduAna-Maria Radu AnaRadu Data 19 februarie 2015 18:58:19
Problema Pascal Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.76 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);
    n=i;
    if(i%2==1)
        n--;
    if(k==2||k==3||k==5){
        p1=fact(k,i);
        for(j=1;j<=n/2;j++){
            p2=fact(k,j);
            p3=fact(k,i-j);
            if(p1-p2-p3>=1){
                if(j<n/2)
                    cate+=2;
                else{
                    if(i%2==0)
                        cate++;
                    else
                        cate+=2;
                }
            }
        }
    }
    if(k==4){
        k=2;
        p1=fact(k,i);
        for(j=1;j<=n/2;j++){
            p2=fact(k,j);
            p3=fact(k,i-j);
            if(p1-p2-p3>=2){
                if(j<n/2)
                    cate+=2;
                else{
                    if(i%2==0)
                        cate++;
                    else
                        cate+=2;
                }
            }
        }
    }
    if(k==6){
        for(j=1;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){
                    if(j<n/2)
                        cate+=2;
                    else{
                        if(i%2==0)
                            cate++;
                        else
                            cate+=2;
                    }
                }
            }
        }
    }
    printf("%d",cate);
return 0;
}