Cod sursa(job #1433896)

Utilizator PetreCatalinFMI Petre Catalin PetreCatalin Data 10 mai 2015 09:20:27
Problema Ratphu Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
#include <cstring>
#include <cstdio>

using namespace std;

long long dp[270000][20],c[20],r,k,i,j,p,n,l,x;
char s[20];

int main ()
{
    freopen("ratphu.in","r",stdin);
    freopen("ratphu.out","w",stdout);

    scanf("%s",&s);
    for (i=0;i<strlen(s);++i)
        c[i+1]=s[i]-'0';
    scanf("%ld",&p);
    n=strlen(s);
    l=(1u<<n)-1;

    dp[0][0]=1;
    for (i=0;i<=l;++i)
        for (j=0;j<p;++j)
            if (dp[i][j]!=0)
            for (k=0;k<n;++k)
                if (!(i&(1u<<k))) {
                    x=i|(1u<<k);
                    r=j*10+c[k+1];
                    while (r>=p) r-=p;
                    dp[x][r]+=dp[i][j];
                }

    printf("%lld",dp[l][0]);

    fclose(stdin);
    fclose(stdout);
    return 0;
}