#define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include using namespace std; const int maxn = 1e6; double p[1005], dp[1005],q[1005]; int n; typedef struct Value{ double v; int x; Value(double v = 0, int x = 0) :v(v), x(x){} friend bool operator < (Value a, Value b){ return a.v < b.v; } }Value; priority_queue Q; double v(int x){ return p[x] * (1 - dp[x]) * q[x]; } int main(){ cin >> n; for (int i = 0; i < n; i++){ scanf("%lf", &p[i]); p[i] /= 1e3; } for (int i = 0; i < n; i++){ scanf("%lf", &q[i]); q[i] /= 1e2; } double g = 0; for (int i = 0; i < n; i++) Q.push(Value(v(i), i)); for (int i = 1; i < maxn; i++){ if (i%10000 == 0){ int k = 0; } int x = Q.top().x; Q.pop(); g += i * v(x); dp[x] += (1 - dp[x]) * q[x]; Q.push(Value(v(x), x)); } printf("%.7lf\n", g); return 0; }