#include using namespace std; const int MAXX = 50 * 1000 + 5; const int CHUNK = 250; const int BIG = 300000; int cnt(int x) { int ans = 0; while(x > 0) { int c = x % 10; ans -= (c == 7); ans += (c == 4); x /= 10; } return ans; } short int sum[1800][MAXX + 5]; int main() { int q; scanf("%d", &q); vector dif(MAXX + 1, 0); vector M(MAXX + 1, 0); for(int i = 1; i <= MAXX; ++i) { dif[i] += dif[i - 1]; dif[i] += cnt(i); M[dif[i]]++; } vector need; for(int i = 0; i <= MAXX; ++i) { if(M[i] > 1) { need.push_back(i); } } int sz = need.size(); cerr << sz << "\n"; for(int i = 0; i < sz; ++i) { sum[i][0] = 0; for(int j = 1; j <= MAXX; ++j) { sum[i][j] += sum[i][j - 1]; sum[i][j] += (dif[j] == need[i]); } } for(int i = 0; i < q; ++i) { int a, b; scanf("%d %d", &a, &b); long long ans = 0; for(int j = 0; j < sz; ++j) { int amount = sum[j][b] - sum[j][a - 1]; if(need[j] == dif[a - 1]) amount++; ans += amount * (amount - 1) / 2; } printf("%lld\n", ans); } }