Cod sursa(job #82208)

Utilizator gurneySachelarie Bogdan gurney Data 5 septembrie 2007 22:11:54
Problema Cifre Scor 30
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.25 kb
program cifre;
  const
    fin='cifre.in';
    fout='cifre.out';
var
  a,b,c,k,i,j,n,x,y:longint;

function f(x:longint):longint;
  var
    s,lg,a,b,nr,i:longint;
    st,aa:array[1..10] of longint;
    procedure back(num:integer);
      var
        x,i:longint;
      begin
        if (num=lg+1)and(nr>=k) then
          begin
            x:=1;
            for i:=1 to lg do
              x:=x*st[i];
            inc(s,x);
          end
        else if (num<lg+1) then
          begin
            inc(nr);
            if aa[num]>=c then
              begin
                st[num]:=1;
                back(num+1);
              end;
            dec(nr);
            st[num]:=aa[num]+1;
            if aa[num]>=c then
              dec(st[num]);
            back(num+1);
          end;
      end;

  begin
    a:=x;lg:=0;
    while a>0 do
      begin
        a:=a div 10;
        inc(lg);
      end;
    for i:=lg downto 1 do
      begin
        aa[i]:=x mod 10;
        x:=x div 10;
      end;
    s:=0;nr:=0;
    back(1);
    f:=s;
  end;

begin
assign(input,fin);
  reset(input);
  readln(a,b,c,k);
close(input);
assign(output,fout);
  rewrite(output);
  writeln((f(b)-f(a-1))/(b-a+1):0:4);
close(output);
end.