Cod sursa(job #6871)

Utilizator valkyriaValkyria Dark valkyria Data 21 ianuarie 2007 10:06:05
Problema Diviz Scor 0
Compilator fpc Status done
Runda preONI 2007, Runda 1, Clasele 11-12 Marime 0.91 kb
Program diviz;

var f,g:text;
	n,k,nc:longint;
	a,b,nr,i,ncif:byte;
	v,st, numere:array[0..10] of 0..9;
 	
function unic(p:byte):boolean;
var j:byte; ok:boolean;
begin
	ok:=true;
	for j:=1 to nr do				
		if numere[j]=p then begin ok:=false; break;end;
	unic:=ok;
end;

Function good(p:byte):boolean;

begin
	nc:=0;
	for i:=1 to p do
		nc:=nc*10+v[st[i]];
	if (nc mod k=0) and unic(nc) then
		good:=true
	else good:=false;
end;
		


Procedure bck(p:byte);
var pval:byte;
begin
	for pval:=st[p-1]-1 downto 1 do
		begin
			st[p]:=pval;
			if p>=a then
				if good(p) then begin
					nr:=nr+1;
					numere[nr]:=nc;
				end;
			if p<b then	
				bck(p+1);
		end;
end;


begin
	assign(f,'diviz.in'); reset(f);
	assign(g,'diviz.out'); rewrite(g);
	readln(f,k,a,b);
	readln(f,n);
	nc:=n;
	while nc<>0 do begin
		ncif:=ncif+1;
		v[ncif]:=nc mod 10;
		nc:=nc div 10;
	end;
	st[0]:=ncif+1;
	nr:=0;
	bck(1);
	write(g,nr);
	close(f);
	close(g);
end.