Cod sursa(job #514056)

Utilizator tamas_iuliaTamas Iulia tamas_iulia Data 17 decembrie 2010 17:40:52
Problema Ratphu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <stdio.h>
#define Pmax 18
#define LL long long

LL din[(1<<Pmax)+1][Pmax+1];
LL N;
int P,vn[Pmax+1],sn;

int main(){
    int i,j,r;
    freopen("ratphu.in","r",stdin);
    freopen("ratphu.out","w",stdout);
    scanf("%lld %d",&N,&P);
    while( N ){
        vn[sn++]=N%10;
        N/=10;
    }

    for(i=0;i<sn;++i) din[(1<<i)][vn[i]%P]=1;

    for(i=1;i<(1<<sn);++i)
        for(j=0; j<sn; ++j)
            if( !(i&(1<<j)) )
                for(r=0;r<P;++r)
                    din[i+(1<<j)][(r*10+vn[j])%P]+=din[i][r];

    printf("%lld\n",din[(1<<sn)-1][0]);
    fclose(stdin); fclose(stdout);
    return 0;
}