/*
TASK: socks
LANG: C++
*/
#include <iostream.h>
#include <iomanip.h>
int n;                       // broq razfasovki
unsigned long int k;         // broq nujni 4orapi
unsigned long int pack[30];  // masiv za vidovete razfasovki
double price[30];            // masiv za cenite
double sum=0;                // neobhodimata suma
unsigned long int num=1;     // tekushtiq broi 4orapi
unsigned long int num2=0;

void sock()
{
    num=1;
    for(int i=0; i<=n; i++)
    {
	num*=pack[i];
	if(num2+num>=k)
	{
	  sum+=price[i];
	  return;
	}
    }
    num2+=num;
    sum+=price[n];
    sock();
}


int main()
{
   pack[0]=1;
   cin >> n >> k;
   for(int i=1; i<=n; i++) cin >> pack[i];
   cin >> price[0];
   for(int j=1; j<=n; j++) cin >> price[j];

   sock();
   cout << setiosflags(ios::fixed) << setprecision(2) << sum << endl;
   return 0;
}