Pagini recente » Cod sursa (job #1019988) | Cod sursa (job #1948516) | Cod sursa (job #930851) | Cod sursa (job #2579600) | Cod sursa (job #498037)
Cod sursa(job #498037)
#include<stdio.h>
#include<string.h>
long long nr;
int n,p,v[30],s[30],u[30];
char sir[30];
void scrie(){
int i;
long long nou=0;
for(i=1;i<=n;++i)
nou=nou*10+v[s[i]];
if(nou%p==0) ++nr;
}
/*
void scrie(){
int i;
for(i=1;i<=n;++i) printf("%d",s[i]);
printf("\n");
} */
void back(){
int as,k=1;
s[k]=0;
while(k){
do{s[k]++;}while((as=s[k]<=n)&&u[s[k]]);
if(as){
u[s[k]]=1;
if(k==n) {scrie();goto iar;}
else s[++k]=0;
}
else {
iar:
u[s[k]]=0;
k--;
u[s[k]]=0;
}
}
}
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+1]=sir[i]-48;
back();
printf("%lld",nr);
return 0;
}