#include <bits/stdc++.h>
using namespace std;
const int INFI = (1LL << 30) - 100;
const long long INFL = (1LL << 62);
const double eps = 1e-10;
const long double pi = acos(-1.0);
const int MAXN = 1010;
long long p10[20];
double prob[MAXN];
double dp[MAXN][MAXN];
int main() {
  int n;
  scanf("%d", &n);
  p10[0] = 1;
  for (int i = 1; i <= 18; i++) {
    p10[i] = p10[i - 1] * 10;
  }
  for (int i = 1; i <= n; i++) {
    double nrfirst = 0;
    long long lf, rt, lfo, rto;
    scanf("%I64d%I64d", &lf, &rt);
    lfo = lf;
    rto = rt;
    long long nrciflf = 1, nrcifrt = 1, firstlf = lf, firstrt = rt;
    while (firstlf > 9) {
      nrciflf++;
      firstlf /= 10;
    }
    while (firstrt > 9) {
      nrcifrt++;
      firstrt /= 10;
    }
    if (firstlf == 1) {
      nrfirst -= lf % p10[nrciflf - 1];
      lf = p10[nrciflf - 1] - 1;
    }
    if (firstrt == 1) {
      nrfirst += rt % p10[nrcifrt - 1] + 1;
      rt = p10[nrcifrt - 1] - 1;
    }
    for (int i = 0; i <= 18; i++) {
      if (p10[i] > lf && p10[i] < rt) {
        nrfirst += p10[i];
      }
    }
    prob[i] = nrfirst / double(rto - lfo + 1);
  }
  dp[0][0] = 1;
  for (int i = 1; i <= n; i++) {
    dp[i][i] = dp[i - 1][i - 1] * prob[i];
    dp[i][0] = dp[i - 1][0] * (1 - prob[i]);
  }
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j < i; j++) {
      dp[i][j] = dp[i - 1][j - 1] * prob[i] + dp[i - 1][j] * (1 - prob[i]);
    }
  }
  double k;
  scanf("%lf", &k);
  k /= 100;
  double sl = 0;
  for (int i = 0; i <= n; i++) {
    if (double(i) / n + eps > k) {
      sl += dp[n][i];
    }
  }
  printf("%0.10f", sl);
  return 0;
}
