Cod sursa(job #1595111)

Utilizator elevenstrArina Raileanu elevenstr Data 9 februarie 2016 22:35:06
Problema Ratphu Scor 80
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul II Marime 0.61 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("ratphu.in");
ofstream out("ratphu.out");
long long dp[1<<19][22],p,c[22];
//am folosit numerele cu indicii ca biti de 1 in reprezentarea (1<<19)
//restul la impartirea cu p e (22)
char s[22];
int main()
{
    in>>s;
    in>>p;
    for(int i=0;s[i];i++)
        c[i]=s[i]-'0';
    dp[0][0]=1;
    for(int i=0;i<=((1<<strlen(s))-1);i++)
        for(int j=0;j<strlen(s);j++)
          if(((1<<j)&i)==0)
             for(int k=0;k<p;k++)
               dp[i+(1<<j)][(k*10+c[j])%p]+=dp[i][k];
    out<<dp[(1<<strlen(s))-1][0];

    return 0;
}