#include <bits/stdc++.h>
using namespace std;
void read(unsigned long long &x) {
  x = 0;
  unsigned long long f = 1;
  char c = getchar();
  while (c < '0' || c > '9') {
    if (c == '-') f = -f;
    c = getchar();
  }
  while (c >= '0' && c <= '9') {
    x = (x << 3) + (x << 1) + c - '0';
    c = getchar();
  }
  x *= f;
  return;
}
void print(unsigned long long x) {
  if (x < 10ll) {
    putchar(x + '0');
    return;
  }
  print(x / 10ll);
  putchar(x % 10ll + '0');
}
void write(unsigned long long x) { print(x < 0ll ? -x : x); }
unsigned long long maxt(unsigned long long a, unsigned long long b) {
  return a > b ? a : b;
}
unsigned long long mint(unsigned long long a, unsigned long long b) {
  return a < b ? a : b;
}
unsigned long long solve(unsigned long long x) {
  unsigned long long tmp = 1, ret = 0;
  while (tmp <= x) {
    ret += mint(tmp, x - tmp + 1);
    tmp *= 10;
  }
  return ret;
}
unsigned long long n, k, s[1005], l, r, tot = 1, p, cnt, t[1005];
double dp[1005], ans;
int main() {
  bool f = 0;
  read(n);
  for (int i = 1; i <= n; i++) {
    read(l), read(r);
    unsigned long long a = solve(r), b = solve(l - 1);
    s[i] = a - b;
    if (a - b == r - l + 1) cnt++;
    t[i] = r - l + 1 - s[i];
  }
  read(k);
  dp[0] = 1.0;
  for (int i = 1; i <= n; i++)
    for (int j = n; j >= 0; j--) {
      dp[j] = dp[j] * t[i];
      if (j) dp[j] += dp[j - 1] * s[i];
      dp[j] /= (t[i] + s[i]);
    }
  for (int i = 0; i <= n; i++)
    if (double(i) / double(n) >= double(k) / (100.0)) {
      p = i;
      break;
    }
  unsigned long long tmp = 1;
  for (int i = maxt(cnt, p); i <= n; i++) {
    ans += dp[i];
  }
  printf("%.15lf", ans);
}
