Pagini recente » Cod sursa (job #962861) | Cod sursa (job #2677607) | Cod sursa (job #476077) | Cod sursa (job #183597) | Cod sursa (job #497674)
Cod sursa(job #497674)
#include<stdio.h>
#include<string.h>
long long nr;
int n,p,v[30],s[30];
char sir[30];
int valid(int k){
int i;
for(i=0;i<k;++i)
if(s[i]==s[k]) return 0;
return 1;
}
void scrie(){
int i;
long long nou=0;
for(i=0;i<n;++i)
nou=nou*10+v[s[i]];
if(nou%p==0) ++nr;
}
void back(){
int up,k=0;
s[k]=-1;
while(k>-1){
up=0;
while(!up&&s[k]<n-1){
s[k]++;
if(valid(k)) up=1;
}
if(up)
if(k==n-1) scrie();
else s[++k]=-1;
else k--;
}
}
int main(){
freopen("ratphu.in","r",stdin);
freopen("ratphu.out","w",stdout);
int i;
scanf("%s%d",sir,&p);
n=strlen(sir);
for(i=0;i<n;++i) v[i]=sir[i]-48;
back();
printf("%lld",nr);
return 0;
}