Cod sursa(job #1436957)

Utilizator cernat.catallinFMI Cernat Catalin Stefan cernat.catallin Data 16 mai 2015 17:45:08
Problema Ratphu Scor 100
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I, Semestrul 2 Marime 0.69 kb
#include <fstream>
using namespace std;

const int lmax = 262145;
const int pmax = 21;

std::ifstream in("ratphu.in");
std::ofstream out("ratphu.out");

int digits[20];
long long int sol[lmax][pmax];

int main() {
    long long int n;
    int p;
    int l = 0;

    in >> n >> p;
    while (n) {
        digits[l++] = n % 10;
        n /= 10;
    }


    sol[0][0] = 1;
    for (int i = 0; i < (1 << l); ++i)
        for (int j = 0; j < l; ++j)
            if ((i & (1 << j)) == 0) {
                int tmp = i | (1 << j);
                for (int k = 0; k < p; ++k)
                    sol[tmp][(k * 10 + digits[j]) % p] += sol[i][k];
            }

    out << sol[(1 << l) - 1][0] << '\n';
    return 0;
}