Cod sursa(job #1721482)

Utilizator LucianTLucian Trepteanu LucianT Data 25 iunie 2016 18:49:11
Problema Ratphu Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <bits/stdc++.h>
#define maxN 20
using namespace std;
int i,j,v[maxN],nrc,p,maxC,mask;
long long dp[maxN][1<<maxN],n;
int main()
{
    freopen("ratphu.in","r",stdin);
    freopen("ratphu.out","w",stdout);
    scanf("%lld %d",&n,&p);
    while(n)
        v[nrc++]=n%10,n/=10;
    maxC=(1<<nrc);
    dp[0][0]=1;
    for(mask=0;mask<maxC-1;mask++)
        for(j=0;j<p;j++)
    {
        if(dp[j][mask]==0) continue;
        for(i=0;i<nrc;i++)
        {
            if((mask&(1<<i))) continue;
                dp[(10*j+v[i])%p][mask|(1<<i)]+=dp[j][mask];
        }
    }
    printf("%lld",dp[0][maxC-1]);
    return 0;
}