/*
TASK:socks
LANG:C
*/
#include<stdio.h>
#define maxN (32)

int n,k;
float best;
int list[maxN];
float price[maxN];
float lbest[maxN];
int len=0;

int main()
{
int i,j,p,s;
float pr=0.0;
scanf("%d %d",&n,&k);n++;
list[1] = 1;
for (i=2;i<=n;i++) {scanf("%d",&p);
                   list[i] = list[i-1]*p;}
for (i=1;i<=n;i++) scanf("%f",&price[i]);

p = n;
while (k>0)
      {
      /*printf("k=%d\n",k); */
      if (list[p] >= k) {
                        pr+=price[p];
                        break;
                        }
      s = (int)k/(list[p]);
      /*printf("s=%d\n",s);*/
      lbest[len++] = pr + (s+1)*price[p];
      k -= (s*list[p]);
      pr += (s*price[p]);
      /*printf("pr=%d\n",pr);*/
      p--;
      }
best = pr;
for (i=0;i<len;i++) if (lbest[i] < best) best = lbest[i];
printf("%.2f\n",best);
return 0;
}
