#include <bits/stdc++.h>
using namespace std;
const int maxn = 1000 + 23;
int n, target;
unsigned long long L, R, k, K;
double p[maxn], F[maxn][maxn], ans, ansl, ansr;
double getP(unsigned long long l, unsigned long long r) {
  k = 10, l--;
  if (l == 0)
    ansl = 0;
  else
    ansl = 1;
  while (k <= l) {
    if ((k * 2) <= l)
      ansl += k;
    else
      ansl += (l - k + 1);
    k *= 10;
  }
  k = 10, ansr = 1;
  while (k <= r) {
    if ((k * 2) <= r)
      ansr += k;
    else
      ansr += (r - k + 1);
    k *= 10;
  }
  return ((ansr - ansl) * 1.0) / ((r - l) * 1.0);
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%I64d%I64d", &L, &R);
    p[i] = getP(L, R);
  }
  scanf("%d", &K);
  for (int i = 0; i <= n; i++)
    if ((100 * i) >= (K * n)) {
      target = i;
      break;
    }
  F[1][0] = 1 - p[1];
  F[1][1] = p[1];
  for (int i = 2; i <= n; i++)
    F[i][0] = F[i - 1][0] * (1 - p[i]), F[i][i] = F[i - 1][i - 1] * p[i];
  for (int i = 2; i <= n; i++)
    for (int j = 1; j <= i; j++)
      F[i][j] = p[i] * F[i - 1][j - 1] + (1 - p[i]) * F[i - 1][j];
  ans = 0;
  for (int i = target; i <= n; i++) ans += F[n][i];
  printf("%.15f\n", ans);
  return 0;
}
