Cod sursa(job #1444331)

Utilizator obidanDan Ganea obidan Data 29 mai 2015 16:22:10
Problema Ratphu Scor 80
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I, Semestrul 2 Marime 0.65 kb
#include <cstdio>
#include <iostream>

using namespace std;

const int maxstari = (1<<18)+5;
const int dimstari = 20;

long long bst[maxstari][dimstari];
long long n;
int v[30];
int p,nr;

int main ()
{
    freopen ("ratphu.in","r",stdin);
    freopen ("ratphu.out","w",stdout);

    cin>>n>>p;
    int i,j,k;

    for ( ; n; n/=10)
        v[nr++]=n%10;
    bst[0][0]=1;
    for (i=0; i<(1<<nr); ++i)
        for (j=0; j<p; ++j)
            if (bst[i][j])
                for (k=0; k<nr; ++k)
                    if (!(i&(1<<k)))
                        bst[i|(1<<k)][(j*10+v[k])%p]+=bst[i][j];
    cout<<bst[(1<<nr)-1][0];

}