#include <bits/stdc++.h>
int IntMaxVal = (int)1e20;
int IntMinVal = (int)-1e20;
long long LongMaxVal = (long long)1e20;
long long LongMinVal = (long long)-1e20;
template <typename T>
inline void minimize(T& a, T b) {
  a = std::min(a, b);
}
template <typename T>
inline void maximize(T& a, T b) {
  a = std::max(a, b);
}
using namespace std;
template <typename T>
struct argument_type;
template <typename T, typename U>
struct argument_type<T(U)> {};
template <typename T1, typename T2>
istream& operator>>(istream& is, pair<T1, T2>& s) {
  is >> s.first >> s.second;
  return is;
}
template <typename T>
ostream& operator<<(ostream& os, const vector<T>& v) {
  for (int i = 0; i < v.size(); i++) os << v[i] << ' ';
  os << '\n';
  return os;
}
template <typename T1, typename T2>
ostream& operator<<(ostream& s, pair<T1, T2>& t) {
  s << t.first << ' ' << t.second;
  return s;
}
template <typename T>
vector<T> readVector(int n) {
  vector<T> res(n);
  for (int i = 0; i < n; i++) cin >> res[i];
  return res;
}
long long l18 = 1000LL * 1000LL * 1000LL * 1000LL * 1000LL * 1000LL;
long long getOnes(long long mx) {
  long long res = 0;
  if (mx == l18) {
    mx--;
    res++;
  }
  for (long long l = 1; l <= mx; l *= 10) {
    long long r = 2 * l - 1;
    minimize(r, mx);
    res += r - l + 1;
  }
  return res;
}
int main() {
  srand(time(NULL));
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int n;
  cin >> n;
  ;
  double dp[n + 1][n + 1];
  for (int i = 1; i < n + 1; ++i) dp[0][i] = 0;
  dp[0][0] = 1;
  for (int i = 1; i < n + 1; ++i) {
    long long fl;
    cin >> fl;
    ;
    long long fr;
    cin >> fr;
    ;
    long long size = fr - fl + 1;
    long long ones = getOnes(fr) - getOnes(fl - 1);
    double chance1 = ones * 1.0 / size;
    double chance0 = 1 - chance1;
    for (int j = 0; j < n + 1; ++j) dp[i][j] = chance0 * dp[i - 1][j];
    for (int j = 1; j < n + 1; ++j) dp[i][j] += chance1 * dp[i - 1][j - 1];
  }
  int k;
  cin >> k;
  ;
  fixed(cout);
  cout << setprecision(15);
  double ans = 0.0;
  for (int i = 0; i < n + 1; ++i)
    if (i * 100 >= k * n) ans += dp[n][i];
  cout << ans << '\n';
}
