>>432
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
void hoge(int *number, int *is_used, int size, int d, long long value, int *count){
int i, prev=-1;
for(i=0;i<size;i++){
if(is_used[i] || prev==number[i]) continue;
is_used[i]=1;
hoge(number, is_used, size, d, value*10+number[i], count);
is_used[i]=0;
prev=number[i];
}
if(prev<0 && value%d==0) *count+=1;
}
int cmp(const int *a, const int *b){return *a-*b;}
void fuga(char *s, int d){
int number[10], is_used[10]={0}, count=0, i;
for(i=0;i<10 && s[i];i++){
if(!isdigit(s[i])) return;
number[i]=s[i]-'0';
}
qsort(number, i, sizeof(int), (int (*)(const void*,const void*))cmp);
hoge(number, is_used, i, d, 0LL, &count);
printf("%s, %d => %d\n", s, d, count);
}
int main(void){
fuga("000", 1);
fuga("1234567890", 1);
fuga("123434", 2);
return 0;
}