Cod sursa(job #1595107)

Utilizator elevenstrArina Raileanu elevenstr Data 9 februarie 2016 22:33:17
Problema Ratphu Scor 70
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul II Marime 0.63 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+1;
    in>>p;
    for(int i=1;s[i];i++)
        c[i]=s[i]-'0';
    dp[1][0]=1;
    for(int i=0;i<=((1<<(strlen(s+1)+1))-1);i++)
        for(int j=1;j<=strlen(s+1);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)+1))-1][0];

    return 0;
}