Cod sursa(job #2253952)

Utilizator pinteastefanPintea Teodor Stefan pinteastefan Data 4 octombrie 2018 16:44:52
Problema Ratphu Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <bits/stdc++.h>

using namespace std;
long long n;
int p, dp[1 << 18][20];
vector <int> cifre;

int main() {
    ifstream f("ratphu.in");
    ofstream g("ratphu.out");
    f >> n >> p;
    while (n){
        cifre.push_back(n % 10);
        n = n / 10;
    }
    reverse(cifre.begin(), cifre.end());
    for (int i = 0; i < (1 << cifre.size()); ++i ){
        for( int j = 0; j < p; ++j ){
            dp[i][j] = 0;
        }
    }
    dp[0][0] = 1;
    for (int i = 0; i < ( 1 << cifre.size()); ++i){
        for (int j = 0; j < p; ++j){
            for (int bit = 0; bit < cifre.size(); ++ bit)
                if (not (i & (1 << bit)))
                  dp[i ^ (1 << bit)][(j * 10 + cifre[bit]) % p] += dp [i][j];
        }
    }
    g << dp[(1 << cifre.size()) - 1][0];
    return 0;
}