/*
TASK:socks
LANG:C++
*/
#include <iostream>
using namespace std;
int main ()
{
int i,j,n,k,ost,br[40],x=1;
float s=0.0,c[40];
scanf("%d%d",&n,&k);
br[0]=1;
for(i=1;i<=n;i++)scanf("%d",&br[i]);
for(i=0;i<=n;i++)
                 scanf("%f",&c[i]);
for(i=1;i<=n;i++)br[i]*=br[i-1];
ost=k;
for(i=n;i>=0;i--)
                 {
                  if(!ost%br[i]){s+=(ost/br[i])*c[i];break;}
                  if((ost/br[i]+x)*br[i]-ost>2*br[i-1]){ost-=(ost/br[i])*br[i];s+=(ost/br[i]+x)*c[i]; continue;}
                  ost-=(ost/br[i]+x)*br[i];
                  s+=(ost/br[i]+x)*c[i];
                  if(ost<=0)break;
                  }
printf("%.2f\n",s);
}

