#include #include #include #include #include #include #include #include #define mp make_pair #define pb push_back #define LL long long #define inf 2e9 #define zeros x^(x-1)&x #define Nmax 50001 using namespace std; int s,n,rez[Nmax]; struct query{ int l,r,poz; }Q[Nmax]; bool comp(query a,query b) { if (a.l / s != b.l / s) return a.l / s < b.l / s; return a.r > b.r; } int calc47(int a,int b,int cum) { int rez = 0,i,salt; if (cum==2) { i = a; while (i%10!=4 && i%10!=7 && i<=b) i++,rez++; if (i%10==4) { i+=3; salt = 7; } else { i+=7; salt = 3; } for (;i<=b;i+=10) { rez += min(salt,b-i+1); } return rez; } else { i = b; while (i%10!=4 && i%10!=7 && i>=a) i--,rez++; if (i%10==4) { i-=7; salt = 3; } else { i-=3; salt = 7; } for (;i>=a;i-=10) { rez += min(salt,i-a+1); } return rez; } } int main() { cin.sync_with_stdio(false); cin>>n; for (int i=1;i<=n;i++) { cin>>Q[i].l>>Q[i].r; Q[i].poz = i; } s = sqrt(n); sort(Q+1,Q+n+1,comp); int st = 1,dr = 0; LL nr = 0; for (int i=1;i<=n;i++) { while (drQ[i].r) { nr -= calc47(st,dr,1); dr--; } while (stQ[i].l) { st--; nr += calc47(st,dr,2); } rez[Q[i].poz] = nr; } for (int i=1;i<=n;i++) cout<