Cod sursa(job #583737)

Utilizator preda_alexandruPreda Alexandru preda_alexandru Data 22 aprilie 2011 12:13:14
Problema Pascal Scor 40
Compilator c Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<stdio.h>

int combinari(int i, int j, int D)
{
    int pow = 0;
    int k, q;
    for(k=j+1, q=k; k<=i; k++,q=k)
        while(q%D==0)
        {
            pow++;
            q/=D;
        }
    for(k=1, q=k; k<=i-j; k++,q=k)
        while(q%D==0)
        {
            pow--;
            q/=D;
        }
    return pow;
}

int main()
{
    int R , D, j, c = 0;
    FILE *f, *g;
    f = fopen("pascal.in", "rt");
    g = fopen("pascal.out", "wt");
    fscanf(f, "%i%i", &R, &D);
    switch (D)
    {
    case 4:
        for(j=0;j<=R/2;j++)
            if(combinari(R, j, 2) > 1)
                c++;
        break;
    case 6:
        for(j=0;j<=R/2;j++)
            if(combinari(R, j, 3) && combinari(R, j, 2))
                c++;
        break;
    default:
        for(j=0;j<=R/2;j++)
            if(combinari(R, j, D))
                c++;
    }
    if(R%2)
        c = 2*c;
    else
        c = 2*c - 1;
    fprintf(g, "%i", c);
    fclose(f);
    fclose(g);
    return 0;
}