Cod sursa(job #1318527)

Utilizator jul123Iulia Duta jul123 Data 16 ianuarie 2015 00:48:13
Problema Ratphu Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 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 p;
    char n[100];

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

    int len  = strlen(n);
    while( nr != len) {
        digit[nr] = n[nr] - '0';
        nr++;
    }
    d[0][0]=1;
    long long lim = ( 1 << nr );
    for( int i = 0; i < lim; ++i)
        for(int k = 0; k < p; ++k)
            if(d[i][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, "%lld\n", d[(1 << nr) - 1][0]);
}