Pagini recente » Cod sursa (job #1032627) | Cod sursa (job #872954) | Cod sursa (job #1562496) | Cod sursa (job #726357) | Cod sursa (job #1595113)
#include <bits/stdc++.h>
using namespace std;
ifstream in("ratphu.in");
ofstream out("ratphu.out");
long long dp[1<<19][22];
int 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;
}