Cod sursa(job #1434192)

Utilizator alexandru.ghergutAlexandru-Gabriel Ghergut alexandru.ghergut Data 10 mai 2015 13:48:24
Problema Ratphu Scor 60
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I, Semestrul 2 Marime 0.85 kb
#include <fstream>
#include <cmath>
using namespace std;

int main()
{
    long long N;
    int P, i;
    ifstream f("ratphu.in");
    f >> N >> P;
    f.close();

    int digitsOfN = log10(N) + 1;
    long long maxL = 1 << (digitsOfN + 1);
    long long d[maxL][P];

     for (i = 0; i < maxL; i++)
        fill(d[i], d[i] + P, 0);

    int digits[digitsOfN], k = 0;
    while(N)
    {
        digits[k] = N % 10;
        N /= 10;
        k++;
    }

    int j, upperBound = 1 << digitsOfN;
    d[0][0] = 1;
    for (i = 0; i < upperBound; i++)
        for (j = 0; j < digitsOfN; j++)
            if ((i & (1 << j)) == 0)
                for (k = 0; k < P; k++)
                    d[i | (1 << j)][(k * 10 + digits[j]) % P] += d[i][k];

    ofstream g("ratphu.out");
    g << d[upperBound - 1][0];
    g.close();

    return 0;
}