Cod sursa(job #2475989)

Utilizator aurelionutAurel Popa aurelionut Data 17 octombrie 2019 20:52:32
Problema Ratphu Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <fstream>
#include <vector>

using namespace std;

int dp[20][(1 << 18) + 5], mxexp;
int digits[20];

int main()
{
    ifstream fin("ratphu.in");
    ofstream fout("ratphu.out");
    long long n, k;
    fin >> n >> k;
    while (n > 0)
    {
        digits[++mxexp] = n % 10;
        n /= 10;
    }
    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;
}