Cod sursa(job #470403)
#include<algorithm>
using namespace std;
#include<bitset>
#define DIM 20
char a[DIM],sol[DIM];
int k,n,rez;
bitset <DIM> v;
inline bool mod (int nr,int x)
{
while(nr>=x)
nr-=x;
if(nr==0)
return 1;
return 0;
}
void back (int x)
{
int i;
long long unsigned nr;
if(x==n+1)
{
nr=0;
for(i=1;i<=n;++i)
nr=nr*10+sol[i]-'0';
if(mod(nr,k))
++rez;
}
else
{
for(i=1;i<=n;++i)
if(!v[i])
{
v[i]=1;
sol[x]=a[i];
back(x+1);
v[i]=0;
}
}
}
int main ()
{
freopen("ratphu.in","r",stdin);
freopen("ratphu.out","w",stdout);
int i=0;
for(scanf("%c",&a[++i]);a[i]!=' ';scanf("%c",&a[++i]));
n=i-1;
scanf("%d",&k);
back(1);
printf("%d",rez);
return 0;
}