Cod sursa(job #2475988)

Utilizator aurelionutAurel Popa aurelionut Data 17 octombrie 2019 20:51:19
Problema Ratphu Scor 80
Compilator cpp-32 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
#include <vector>

using namespace std;

int main()
{
    ifstream fin("ratphu.in");
    ofstream fout("ratphu.out");
    long long n, k;
    fin >> n >> k;
    vector <int> digits;
    while (n > 0)
    {
        digits.push_back(n % 10);
        n /= 10;
    }
    int mxexp = digits.size();
    vector < vector <long long> > dp(k, vector <long long>((1 << mxexp), 0));
    dp[0][0] = 1;
    for (int state = 0;state < (1 << mxexp);++state)
        for (int i = 0;i < mxexp;++i)
            if ((state & (1 << i)) == 0)
                for (int rest = 0;rest < k;++rest)
                    dp[(rest * 10 + digits[i]) % k][state | (1 << i)] += dp[rest][state];
    fout << dp[0][(1 << mxexp) - 1] << "\n" ;
    fin.close();
    fout.close();
    return 0;
}