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

#include <iostream>
using namespace std;

int N,K;
int P[31];
double C[31];

void Read();
void Solve();

int main()
{
 Read();
 Solve();

 return 0;
}

void Read()
{
 cin>>N>>K;
 N++;

 int i,t;
 P[0]=1;
 for(i=1;i<N;i++) {cin>>t; P[i]=P[i-1]*t;}
 for(i=0;i<N;i++) cin>>C[i];
}

void Solve()
{
 double res=0.0;

 while(K>P[N-1]) {res+=C[N-1]; K-=P[N-1];}
 if(K==0) {cout<<res<<endl; return;}

 int i;
 double minp=1000000000.0;

 for(i=N-1;i>=0;i--)
 {
  if(P[i]<K) break;

  res+=C[i];
  minp=minp<res?minp:res;
  res-=C[i];
 }

 cout.precision(2);
 cout.setf(ios::fixed);
 cout<<minp<<endl;
}
