/*
TASK:socks
LANG:C++
*/

#include<iostream.h>
#include<math.h>
#include<iomanip.h>

int N;
int K;
int P[31];
double price[31];

int main ()
{
	cin>>N>>K;
	P[0]=1;

	for (int p=1; p<=N; p++)
		{
			cin>>P[p]; 
			P[p]=P[p]*P[p-1];
		}

	for (int j=0; j<=N; j++)
		cin>>price[j];

	double min=((K/P[N])+1)*price[N];
	
	K=K-(K/P[N])*P[N];

	for (int i=N-1; i>=0; i--)
	{
		if ( ( K/P[i]+1)*price[i] < price[i+1] ) 
		{
			min=min-price[i+1]+price[i];
			K=K-(K/P[i])*P[i];
		}
		else 
		{
			int help=(min*100);
			help=help%100;
			if (help==0) {cout<<min<<".00"<<endl; return 0;}
			if (help<=9) {cout<<min<<".0"<<help<<endl; return 0;}
			cout<<min<<"."<<help<<endl; 
			return 0;
		}
	}
}