Cod sursa(job #1806227)

Utilizator radu.leonardoThe Doctor radu.leonardo Data 14 noiembrie 2016 23:03:07
Problema Ratphu Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <iostream>
#include <fstream>
#include <bitset>

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

char nr[22];
int n[22],p,lg,i,r,j;
long long d[1<<18][21];///d[i][r] nr de solutii cu restul r al configuratiei i

int main()
{
 f>>nr>>p;
 for(lg=0;nr[lg];lg++) n[lg]=nr[lg]-48;

    d[0][0] = 1;
    for(i=0;i< (1<<lg);i++)///pentru toate cele 2^n configuratii
    for(r=0;r<p;++r)///pentru fiecare rest de la 0 la p-1
    if (d[i][r])

               for (j=0;j<lg;++j) ///pentru fiecare cifra a numarului
                        if ( (i  & (1<<j)) == 0) ///daca nu se afla 2 numere pe aceasi pozitie
                        {
                            int NewNr = i | (1 << j);///formez noua configuratie
                            //cout<<bitset<5>(NewNr)<<' ';
                            int NewR=r*10+n[j];NewR%=p;  ///adaug cifra la sfarsit si fac noul rest
                            d[NewNr][NewR] += d[i][r];
                        }



    g<<d[(1<<lg)-1][0];
}