/*
TASK:socks
LANG:C++
*/
#include<iostream>
#include<limits.h>
#include<stdio.h>
int n,k;
int pred[50];
double cost[50];
int okon[50];//pasim kude kolko broia chorapi ima v vseki ot vidovete
double min;
void read()
{
	std::cin>>n>>k;
	int sum=1;
	okon[0]=1;
	for(int i=0;i<=n-1;i++)
	{
		std::cin>>pred[i];
		okon[i+1]=sum*pred[i];
		sum*=pred[i];
	}
	for(int l=0;l<=n;l++)
		std::cin>>cost[l];
}
void check(int k_c,double c_c)
{
	while(k_c>0)
	{
		int p=0;
		for(int i=0;i<=n;i++)
			if(abs(k_c-okon[i])<abs(k_c-okon[p]))
				p=i;
		k_c-=okon[p];
		c_c+=cost[p];
//		std::cout<<okon[p]<<" ";
	}
//	std::cout<<"\n";
	min=c_c;
}
void output()
{
	int q=int(min);
	double mis=min-q;
	mis*=100;
	int mis1=int(mis);
	if(mis1==0)
		std::cout<<q<<"."<<"00"<<"\n";
	else
		std::cout<<q<<"."<<mis1<<"\n";
}
int main()
{
	read();
/*	for(int i=0;i<=n;i++)
		std::cout<<okon[i]<<" ";
	std::cout<<"\n";*/
	check(k,0);
	output();
	return 0;
}