Cod sursa(job #465769)

Utilizator ChallengeMurtaza Alexandru Challenge Data 25 iunie 2010 13:04:52
Problema Ratphu Scor 10
Compilator cpp Status done
Runda Stelele Informaticii 2010, gimnaziu si clasa a IX-a, Ziua 1 Marime 0.97 kb
#include <fstream>

using namespace std;

const char InFile[]="ratphu.in";
const char OutFile[]="ratphu.out";

ifstream fin(InFile);
ofstream fout(OutFile);

unsigned long long L,T,N,A;
int P,v[30],p[30],nr[30];

void calc(int k)
{
    if(k<L)
    {
        for(register int i=0;i<10;++i)
        {
            if(nr[i]!=0)
            {
                A*=10;
                A+=i;
                p[k]=nr[i];
                --nr[i];
                calc(k+1);
                ++nr[i];
            }
        }
    }
    else
    {
        int V=1;
        for(register int i=0;i<k;++i)
        {
            V*=p[i];
        }
        if(A%P==0)T+=V;
        A=0;
    }
}

int main()
{
    fin>>N>>P;
    fin.close();

    L=0;
    while(N)
    {
        ++v[N%10];
        N/=10;
        ++L;
    }
    for(register int i=0;i<=10;++i)
    {
        nr[i]=v[i];
    }

    calc(0);

    fout<<T;
    fout.close();
    return 0;
}