Cod sursa(job #1706623)

Utilizator LucianTLucian Trepteanu LucianT Data 22 mai 2016 21:49:53
Problema Ratphu Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.57 kb
#include <bits/stdc++.h>
int c[20],p;
long long n,np[1<<18][20];
int main()
{
    freopen("ratphu.in","r",stdin);
    freopen("ratphu.out","w",stdout);
    scanf("%lld %lld",&n,&p);
    int s=0;
    while (n)
    {
        c[s++]=n%10;
        n/=10;
    }
    std::reverse(c,c+s);
    np[0][0]=1;
    for (int i=0;i<(1<<s);++i)
        for (int j=0;j<p;++j)
            if (np[i][j])
                for (int k=0;k<s;++k)
                    if ((i&(1<<k))==0)
                        np[i|(1<<k)][(j*10+c[k])%p]+=np[i][j];
    printf("%lld",np[(1<<s)-1][0]);
}