Cod sursa(job #1318521)

Utilizator jul123Iulia Duta jul123 Data 16 ianuarie 2015 00:37:58
Problema Ratphu Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<bits/stdc++.h>

using namespace std;

int digit[30];
long long d[(1 << 21)][25]; // cate permutari dau restul j ormate din cifrele din config i
int main()
{
    FILE *fin = fopen("ratphu.in", "r");
    FILE *fout = fopen("ratphu.out", "w");

    long long n, p;

    fscanf(fin, "%lld %lld", &n, &p);
    int nr = 0;

    while( n != 0 ) {
        digit[nr] = n % 10;
        nr++;
        n /= 10;
    }
    d[0][0]=1;
    long long lim = ( 1 << nr );
    for( int i = 0; i < lim; ++i)
        for(int k = 0; k < p; ++k)
            for( int j = 0; j < nr; ++j )
                    if(( i & (1 << j)) == 0)
                        d[i | (1 << j)][(k * 10 + digit[j]) % p] += d[i][k];
    fprintf(fout, "%d\n", d[(1 << nr) - 1][0]);
}