Cod sursa(job #1164413)

Utilizator xtreme77Patrick Sava xtreme77 Data 2 aprilie 2014 01:18:42
Problema Ratphu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
//#include <fstream>
#include <cstdio>
using namespace std;

long long mat[1<<18][20],n;

int main()
{
    int lung,i,j,rest,k,num[22],aux;
    //ifstream fin("ratphu.in");
    //ofstream fout("ratphu.out");
    //fin>>n>>k;
    freopen("ratphu.in","r",stdin);
    freopen("ratphu.out","w",stdout);
    scanf("%lld %d",&n,&k);
    for (lung=0;n>0;n/=10) {
        num[lung++]=n%10;
    }

    mat[0][0]=1;
    for (i=0;i <(1<<lung);++i){
         for (rest=0;rest<k;++rest){
              if (mat[i][rest]){
                   for (j=0;j<lung;++j){
                         if (!((1<<j)&i)){
                            aux=rest*10 + num[j];
                            while(aux>=k)aux-=k;
                            mat[i+(1<<j)][aux]+=mat[i][rest];
                        }
                    }
            }
        }
    }

    //fout<<mat[(1<<lung)-1][0]<<'\n';
    printf("%lld\n",mat[(1<<lung)-1][0]);

    return 0;
}