Cod sursa(job #1330700)

Utilizator ThomasFMI Suditu Thomas Thomas Data 30 ianuarie 2015 21:39:03
Problema Ratphu Scor 50
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul II Marime 0.63 kb
#include <fstream>
#include <cstring>
using namespace std;

ifstream f("ratphu.in");
ofstream g("ratphu.out");

int D[1<<20][21];
char sir[50];
int n,p;

int main()
{
    int i,j,k,q;

    f>>sir>>p;
    n = strlen(sir);
    for(i=0;i<n;++i) sir[i] -= '0';

    D[0][0] = 1;

    for(i=0; i < (1<<n); ++i) for(j=0;j<p;++j) if(D[i][j])
    {
        for(k=0;k<n;++k) if( ( (1<<k) & i ) == 0)
        {
            q = 10*j + sir[n-k-1];
            while(q >= p) q -= p;
            D[((1<<k)|i)][q] += D[i][j];
        }
    }

    g<<D[(1<<n)-1][0]<<"\n";

    f.close();
    g.close();
    return 0;
}