#include<fstream>
#include<algorithm>
using namespace std;
int fact[10]={1,1,1,1,1,1,1,1,1,1};
int cifre_a[9]={0,0,0,0,0,0,0,0,0};
int cifre_b[9]={0,0,0,0,0,0,0,0,0};
ifstream f("cifre.in");
ofstream g("cifre.out");
void read_number(int& x)
{
f>>x;
}
int factorial(int n)
{
if(n==1)
{
fact[n]=1;
return(1);
}
else
{
fact[n]=n*factorial(n-1);
return(fact[n]);
}
}
int combinari(int n,int k)
{
if(n==0)
return(0);
if(n!=k)
return(fact[n]/(fact[k]*fact[n-k]));
else
return(1);
}
int digits(int x,int dig[])
{
int i=0;
if(x==0)
{
i=1;
dig[0]=0;
}
while(x!=0)
{
dig[i]=x%10;
x=x/10;
i++;
}
reverse(dig, dig+i);
return(i);
}
//returns the number of pow10(m) numbers that have
//at least k digits of c
int favorables(int m,int k,int c)
{
if(m!=0 && k!=0)
return((int)pow((double)10,(double)(m-k))*combinari(m,k)-combinari(m,k)+1);
if(m==0)
return(0);
if(k==0)
return(1);
}
int favorables2(int x, int m, int y, int n, int c, int k)
//returns the number of numbers from x*pow10(m) to y*pow10(n) that have
//at least k digits of c
{
int favor=0;
while(m<n)
{
if(x<=c)
favor+=(10-x-1)*favorables(m-1,k,c)+favorables(m-1,k-1,c);
else
favor+=(10-x)*favorables(m-1,k,c);
m++;
x=1;
}
if(m==n)
//it is supposed that y>x in case m==n from the start
{
if(c<y)
favor+=favorables(n-1,k,c)*(y-x-1)+favorables(n-1,k-1,c);
else
favor+=favorables(n-1,k,c)*(y-x);
}
return(favor);
}
int favorables1(int x,int m,int k,int c,int a)
{
int rg,dig[10],nb_dig=digits(a,cifre_a),fav=0;
for(rg=1;rg<nb_dig;rg++)
fav+=favorables(cifre_a[m-rg-1],k,c)+favorables2(1,m,cifre_a[m-rg],m,c,k);
return(fav);
}
int main()
{
int a,b,c,k,x,y,z,nr_digits,nr_digits2;
read_number(a);
read_number(b);
read_number(c);
read_number(k);
z=factorial(10);
nr_digits=digits(a,cifre_a);
if(a%(int)pow((double)10,(double)(nr_digits-1))==0)
x=cifre_a[0];
else
if(cifre_a[0]==9)
{
x=1;
nr_digits++;
}
else
x=cifre_a[0]+1;
nr_digits2=digits(b,cifre_b);
if(b%(int)pow((double)10,(double)(nr_digits2-1))==0)
y=cifre_b[0];
else
if(cifre_b[0]==1)
{
y=9;
nr_digits2--;
}
else
y=cifre_b[0]-1;
g.precision(4);
//g<<(favorables(nr_digits,k,c)-favorables(nr_digits-1,k,c))-favorables1(x,nr_digits,k,c,a)+favorables1(y,nr_digits2,k,c,a)+favorables2(x,nr_digits,y,nr_digits2,c,k)<<"/"<<(b-a)+1;
g<<fixed<<(float)(favorables(nr_digits,k,c)-favorables(nr_digits-1,k,c))-favorables1(x,nr_digits,k,c,a)+favorables1(y,nr_digits2,k,c,a)+favorables2(x,nr_digits,y,nr_digits2,c,k)/(b-a+1);
}