Cod sursa(job #2306159)

Utilizator borcanirobertBorcani Robert borcanirobert Data 21 decembrie 2018 18:09:00
Problema Ratphu Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <iostream>
#include <fstream>
using namespace std;

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

const int MaxCif = 18;
const int MaxP = 20;

string N;
int P;
long long D[1<<MaxCif][MaxP];

void Dyn();

int main()
{
    fin >> N >> P;

    Dyn();

    fout << D[(1 << N.size()) - 1][0];

    fin.close();
    fout.close();
    return 0;
}

void Dyn()
{
    D[0][0] = 1;
    for (int mask = 0; mask < (1 << N.size()); ++mask)
        for (int r = 0; r < P; ++r)
        {
            if ( !D[mask][r] )
                continue;

            for (int k = 0; k < N.size(); ++k)
            {
                if ( mask & (1 << k) )
                    continue;

                D[mask ^ (1 << k)][(10*r + (N[k] - '0')) % P] += D[mask][r];
            }
        }
}