Cod sursa(job #1792005)

Utilizator CalarisPredut Denis Stefanita Calaris Data 29 octombrie 2016 22:13:59
Problema Ratphu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <iostream>
#include <fstream>

using namespace std;

long long number, DP[1<<20][21];
int valori[19],position=0,biti,mask,rt,P;

int main()
{
    int i;

    fstream f("ratphu.in",ios::in);
    ofstream g("ratphu.out");

    f>>number>>P;

    while(number)
        {
          valori[++position] = number%10;
          number/=10;
        }

    for(i=1;i<=position;++i)
        {
        DP[1<<(position-i)][valori[i]%P]=1;
        }

    biti = (1<<position)-1;


    for(i=0;i<=biti;++i)
        {
        for(mask = 1;mask<=position;++mask)
            {
              if(!(i&(1<<(position-mask))))
                 {
                 for(rt=0; rt<P;++rt)
                    {
                     DP[(1<<(position-mask)) |i ][(rt*10+valori[mask])%P]+=DP[i][rt];
                    }
                 }
            }
        }

    g<<DP[biti][0];

    return 0;
}