Cod sursa(job #465707)

Utilizator silvia_the_bestSilvia Pripoae silvia_the_best Data 25 iunie 2010 12:23:28
Problema Ratphu Scor 0
Compilator cpp Status done
Runda Stelele Informaticii 2010, gimnaziu si clasa a IX-a, Ziua 1 Marime 1.19 kb
#include <cstdio>

#define FIN "ratphu.in"
#define FOUT "ratphu.out"

#define MAXC 20

int P, V[MAXC];

long long R, N;

void parse(long long X)
{
    int i;

    for (i = 1; X; ++ i)    V[i] = X % 10, X /= 10;

    V[0] = i - 1;
}

long long fact(int X)
{
    int i;
    long long  A = 1;

    for (i = 1; i <= X; ++ i)   A = 1LL *  A * i;

    return A;
}

void solve()
{
    int i, j;

    parse(N);

    if (P == 2)
    {
        for (i = 1, j = 0; i <= V[0]; ++ i)
            if (V[i] % 2 == 0)
                ++ j;

        R = 1LL * j * fact(V[0] - 1);

        return;
    }

    if (P == 3)
    {
        for (i = 1, j = 0; i <= V[0]; ++ i)
            j += V[i];

        if (!(j % 3))
        {
            R = fact(V[0]);

            return;
        }
    }

    if (P == 5)
    {
        for (i = 1, j = 0; i <= V[0]; ++ i)
            if (V[i] == 5 || V[i] == 0)
                ++ j;

        R = 1LL * j * fact(V[0] - 1);

        return;
    }
}

int main()
{
    freopen(FIN, "r", stdin);
    freopen(FOUT, "w", stdout);

    scanf("%I64d", &N);

    scanf("%d", &P);

    solve();

    printf("%I64d\n", R);
}