Cod sursa(job #1445275)

Utilizator Impaler_009Mihai Nitu Impaler_009 Data 30 mai 2015 13:00:47
Problema Ratphu Scor 100
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I, Semestrul 2 Marime 0.76 kb
#include <fstream>

using namespace std;

ifstream fin("ratphu.in");
ofstream fout("ratphu.out");

int p,v[18],t,mod[401];
long long dp[1<<18][20],n;

int main()
{
    fin >> n >> p;

    while (n)
    {
        v[t++] = n%10;
        n /= 10;
    }

    dp[0][0] = 1;

    for (int i = 0; i <= 400; ++i)
    {
        mod[i] = i%p;
    }

    for (int i = 0; i < (1<<t); ++i)
    {
        for (int j = 0; j < p; ++j)
        {
            if (dp[i][j] == 0)
                continue;

            for (int k = 0; k < t; ++k)
            {
                if (!((i>>k)&1))
                {
                    dp[i|(1<<k)][mod[j*10+v[k]]] += dp[i][j];
                }
            }
        }
    }

    fout << dp[(1<<t)-1][0];
}