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

int n,k;
int list[maxN];
float price[maxN];

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);*/
      k-=(s*list[p]);
      pr += (s*price[p]);
      /*printf("pr=%d\n",pr);*/
      p--;
      }
printf("%.2f\n",pr);
return 0;
}
