Cod sursa(job #1747147)

Utilizator antanaAntonia Boca antana Data 24 august 2016 16:11:32
Problema Pascal Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <cstdio>

int p[6];
inline int putere(int x, int prim)
{
    int f=prim, ans=0;

    while(f <= x)
    {
        ans+=x/f;
        f*=prim;
    }

    return ans;
}
int main()
{
    freopen("pascal.in", "r", stdin);
    freopen("pascal.out", "w", stdout);

    int r, d, ans=0, i, lim, x, y, a, b;

    scanf("%d%d", &r, &d);

    p[2]=putere(r, 2);
    p[3]=putere(r, 3);
    p[5]=putere(r, 5);

    lim=r/2;
    for(i=0;i<=lim;++i)
    {
        if(d!=4 && d!=6)
        {
            x=putere(r-i, d);
            y=putere(i, d);

            if(p[d] - x - y)
            {
                ans+=2;
                if(i*2 == r) ans--;
            }
        }

        if(d==4)
        {
            x=putere(r-i, 2);
            y=putere(i, 2);

            if(p[2] - x - y > 1)
            {
                ans+=2;
                if(i*2 == r) ans--;
            }
        }

        if(d==6)
        {
            x=putere(r-i, 2);
            y=putere(i, 2);

            a=putere(r-i, 3);
            b=putere(i, 3);

            if(p[2] - x - y > 0 && p[3] - a - b > 0)
            {
                ans+=2;
                if(i*2 == r) ans--;
            }
        }
    }

    printf("%d", ans);

    return 0;
}