Cod sursa(job #1444034)

Utilizator FiliutaMariusFMI Filiuta Marius FiliutaMarius Data 29 mai 2015 05:48:49
Problema Ratphu Scor 80
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I, Semestrul 2 Marime 0.8 kb
#include <fstream>
using namespace std;
#define maxc 18
#define maxr 22

long n, r, i, j, k, pt, v[maxc+10], conf[maxc+10];
long long d[(1<<maxc)+100][maxr];
long long nr;

int main()
{
    ifstream in("ratphu.in");
    ofstream out("ratphu.out");
    in>>nr>>r;
    while(nr>0)
    {
        v[++v[0]]=nr%10;
        nr=nr/10;
    }
    n=v[0];
    d[0][0]=1;
    for(i=0; i<(1<<n)-1; ++i)
    {
        pt=1;
        for(j=0; j<n; ++j)
        {
            conf[j]=((i>>j)&1);
            if(conf[j])
                pt=(pt*10)%r;
        }
        for(j=0; j<r; ++j)
        {
            if(d[i][j]==0) continue;
            for(k=0; k<n; k++)
                if(conf[k]==0)
                    d[i|(1<<k)][(j+(pt*v[k+1]))%r]+=d[i][j];
        }
    }
    out<<d[(1<<n)-1][0];
}