Cod sursa(job #1706625)

Utilizator LucianTLucian Trepteanu LucianT Data 22 mai 2016 21:51:29
Problema Ratphu Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
//???
#include <bits/stdc++.h>
int c[20], p;
long long n, np[1 << 18][20];

int main()
{
    freopen("ratphu.in", "r", stdin);
    freopen("ratphu.out", "w", stdout);
    scanf("%lld %lld", &n, &p);

    int s = 0;
    while (n)
    {
        c[s++] = n % 10;
        n /= 10;
    }
    std::reverse(c, c + s);

    np[0][0] = 1;
    for (int i = 0; i < (1 << s); ++i)
        for (int j = 0; j < p; ++j)
            if (np[i][j])
                for (int k = 0; k < s; ++k)
                    if ((i & (1 << k)) == 0)
                        np[i | (1 << k)][(j * 10 + c[k]) % p] += np[i][j];

    printf("%lld", np[(1 << s) - 1][0]);
}