Cod sursa(job #2560617)

Utilizator mirceamaierean41Mircea Maierean mirceamaierean41 Data 28 februarie 2020 10:11:41
Problema Ratphu Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
#include <deque>
using namespace std;

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

deque <int> c;

int p;

long long n, dp[1 << 18][20]; //dp[i][j] = numarul de posibilitati cu cifrele din masca i, pentru a se obtine un numar j % p; 

int main()
{
    fin >> n >> p;
    while (n)
    {
        c.push_front(n % 10);
        n /= 10;
    }

    dp[0][0] = 1;
    
    int len = c.size();

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

    fout << dp[(1 << len) - 1][0] << "\n";

    return 0;
}