#include <stdio.h>
#include <string.h>

#define FOR(i,a,b) for(int i=(a);i<(b);i++)
#define REP(i,b) FOR(i,0,(b))

typedef unsigned long long ull;
	
double dp[1<<20],b[1<<20];
int c[1<<20];

inline ull gcd(ull a,ull b){
	return b?gcd(b,a%b):a;
}

ull a[20];
int p[20];
int main(){
	int n;
	ull m;
	scanf("%d%llu",&n,&m);
	REP(i,1<<n) b[i]=0,c[i]=0;
	REP(i,n) scanf("%llu",a+i);
	REP(i,n) scanf("%d",p+i);
	FOR(i,1,1<<n) REP(j,n) c[i]+=(i>>j)&1;
	int g=1;
	FOR(k,1,n+1){
		REP(i,1<<n) dp[i]=0;
		FOR(i,1,1<<n){
			if(c[i]<k)
				continue;
			else{
				if(c[i]==k){
					ull s=1;
					REP(j,n)
						if((1<<j)&i){
							ull g=s>a[j]?gcd(s,a[j]):gcd(a[j],s);
							s/=g;
							if(s>m/a[j]){
								s=0;
								break;
							}else
								s*=a[j];
						}
					if(s)
						dp[i]=m/s;
				}else{
					REP(j,n)
						dp[i]+=dp[i^(1<<j)];
					dp[i]/=c[i]-k;
				}
				b[i]+=dp[i]*g;
			}
		}
		g=-g;
	}
	double s=0;
	FOR(i,1,1<<n){
		double e=1;
		REP(j,n)
			if((1<<j)&i)
				e*=0.01*p[j];
			else
				e*=0.01*(100-p[j]);
		s+=b[i]*e;
	}
	printf("%.8f\n",s);
}