Pagini recente » Cod sursa (job #1294438) | Istoria paginii template/preoni-2008/runda-finala/probleme | Cod sursa (job #2008989) | Cod sursa (job #554469) | Cod sursa (job #1144444)
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int dp[(1<<18)][20][20];
int main()
{
int P,a[30],sol=0,i,j,k,t,N;
char s[30];
freopen ("ratphu.in","r",stdin);
freopen ("ratphu.out","w",stdout);
scanf("%s%d", (s+1),&P);
N=strlen(s+1);
for(i=1;i<=N;++i)
a[i]=s[i]-'0';
for(i=1;i<=N;++i)
dp[(1<<(N-i))][i][a[i]%P]=1;
for(i=1;i<(1<<N);++i)
for(j=1;j<=N;++j)
if((1<<(N-j))&i)
for(k=0;k<P;++k)
for(t=1;t<=N;++t)
if(!((1<<(N-t))&i))
dp[i+(1<<(N-t))][t][(k*10+a[t])%P]+=dp[i][j][k];
for(i=1;i<=N;++i)
sol+=dp[(1<<N)-1][i][0];
printf("%d\n", sol);
return 0;
}