Cod sursa(job #1022701)

Utilizator sleepaholicNeculaescu Theodor sleepaholic Data 5 noiembrie 2013 21:04:54
Problema Ratphu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<iostream>
#include<fstream>
#include<cstring>

using namespace std;

long long d[1 << 20][20];
char s[30];
int cifre[30];

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

int main()
{
    int i, j, k, p, nr, now;

    in >> s;
    nr = strlen(s);

    for(i = 0; i < nr; ++i)
        cifre[i] = s[i] - '0';

    in >> p;

    d[0][0] = 1;

    for(i = 0; i < (1 << nr); ++i)
        for(j = 0; j < p; ++j)
            if(d[i][j])
                for(k = 0; k < nr; ++k)
                    if(!((1 << k) & i)){
                        now = j * 10 + cifre[k];

                        while(now >= p)
                            now -= p;

                        d[i | (1 << k)][now] += d[i][j];
                    }

    out << d[(1 << nr) - 1][0];

    return 0;
}