func_code_string: #include <bits/stdc++.h>   using namespace std;   vector<int> vct;   void DFS(int d, int num) {     if (d == 9) {       return;     } else {       int a = num * 10 + 4;       vct.push_back(a);       DFS(d + 1, a);       int b = num * 10 + 7;       vct.push_back(b);       DFS(d + 1, b);     }   }   long long calc(int a, int b, int l, int r) {     int x = max(a, l);     int y = min(b, r);     if (x > y) {       return 0;     } else {       return y - x + 1;     }   }   int main() {     vct.clear();     DFS(0, 0);     vct.push_back(-1);     vct.push_back(1000000009);     sort(vct.begin(), vct.end());     int ss = vct.size();     int p1, p2, v1, v2;     int k;     while (scanf( %d %d %d %d %d , &p1, &p2, &v1, &v2, &k) != EOF) {       long long ans = 0;       for (int i = 1; i + k < ss; i++) {         int x = vct[i - 1] + 1;         int a = vct[i];         int b = vct[i + k - 1];         int y = vct[i + k] - 1;         long long tmp = 0;         tmp += calc(x, a, p1, p2) * calc(b, y, v1, v2);         tmp += calc(x, a, v1, v2) * calc(b, y, p1, p2);         if (k == 1 && v1 <= a && a <= p2 && tmp > 0) {           tmp--;         }         ans += tmp;       }       double a = 1.0 * ans / (p2 - p1 + 1) / (v2 - v1 + 1);       printf( %.20f n , a);     }     return 0;   }   