Cod sursa(job #1806262)

Utilizator radu.leonardoThe Doctor radu.leonardo Data 14 noiembrie 2016 23:37:06
Problema Ratphu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <iostream>
#include <fstream>


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

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

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

 for(int j=1;j<=11;j++)
 for (int i=p*(j-1)+1;i<p*j; ++i)    rest[i] = rest[i-1]+1;

    d[0][0] = 1;
    for(int i=0;i< (1<<lg);++i)///pentru toate cele 2^n configuratii
    for(int r=0;r<p;++r)///pentru fiecare rest de la 0 la p-1
    if (d[i][r])
               for (int j=0;j<lg;++j) ///pentru fiecare cifra a numarului
                        if ( !((i>>j)&1)) ///daca nu se afla 2 cifre pe aceasi pozitie
                            d[ i | (1 << j)][ rest[r*10+nr[j]] ] += d[i][r];




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