Cod sursa(job #497674)

Utilizator nusmaibunkeleviprofesor cicalescu nusmaibunkelevi Data 3 noiembrie 2010 00:48:14
Problema Ratphu Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#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;
}