Cod sursa(job #1319203)

Utilizator nod_softwareBudisteanu Ionut Alexandru nod_software Data 16 ianuarie 2015 19:33:52
Problema Ratphu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>
#include <string>
#include <vector>

using namespace std;

string sString;
int p;
long long BST[1<<18][21];

//---------------------------------------------------------------------------------
void Solve ()
{

    for( size_t i=0 ; i < sString.size() ; ++i )
    {
        sString[i]=(sString[i]-'0')%p;
        BST[1<<i][sString[i]]=1;
    }

    for( int i=0 ; i < (1<<sString.size()) ; ++i )
        for( int j=0 ; j < sString.size() ; ++j )
           if( (i&(1<<j)) == 0  )
            for( int k=0 ; k < p ; ++k )
            {
                int x=k*10+sString[j];
                for( ; x >= p ; x-=p );
                BST[i|(1<<j)][x]+=BST[i][k];
            }
}
//---------------------------------------------------------------------------------
int main ()
{
    ifstream fin ("ratphu.in");

    fin>>sString>>p;

    Solve ();

    ofstream fout ("ratphu.out");

    fout<<BST[(1<<sString.size())-1][0];

    return 0;
}