#include<bits/stdc++.h>
#define int long long
using namespace std;
int l,r;
int len,tt,s[100];
int f[41][2][2][2][2][2][2][2][2][2][3][4][5][6][7][8][9];
int dfs(int x,int aa2,int aa3,int aa4,int aa5,int aa6,int aa7,int aa8,int aa9,int a2,int a3,int a4,int a5,int a6,int a7,int a8,int a9,bool flag){
if(!x)return (!a2||!aa2)&&(!a3||!aa3)&&(!a4||!aa4)&&(!a5||!aa5)&&(!a6||!aa6)&&(!a7||!aa7)&&(!a8||!aa8)&&(!a9||!aa9);
if(!flag&&f[x][aa2][aa3][aa4][aa5][aa6][aa7][aa8][aa9][a2][a3][a4][a5][a6][a7][a8][a9]!=-1)return f[x][aa2][aa3][aa4][aa5][aa6][aa7][aa8][aa9][a2][a3][a4][a5][a6][a7][a8][a9];
int ans=0,up=flag?s[x]:9;
for(int i=0;i<=up;i++){
int a2a=(a2*10+i)%2,a3a=(a3*10+i)%3,a4a=(a4*10+i)%4,a5a=(a5*10+i)%5,a6a=(a6*10+i)%6,a7a=(a7*10+i)%7,a8a=(a8*10+i)%8,a9a=(a9*10+i)%9;
ans+=dfs(x-1,aa2||i==2,aa3||i==3,aa4||i==4,aa5||i==5,aa6||i==6,aa7||i==7,aa8||i==8,aa9||i==9,a2a,a3a,a4a,a5a,a6a,a7a,a8a,a9a,flag&&i==up);
}
if(!flag)f[x][aa2][aa3][aa4][aa5][aa6][aa7][aa8][aa9][a2][a3][a4][a5][a6][a7][a8][a9]=ans;
return ans;
}
signed main(){
//for(int i=1;i<=1000000000;i++)cout<<"in"<<endl;
int t;cin>>t;
while(t--){
cin>>l>>r;
tt=r,len=0;
while(tt){
s[++len]=tt%10;
//cout<<s[len];
tt/=10;
}
memset(f,-1,sizeof f);
int ansr=dfs(len,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,true);
//cout<<endl<<ansr<<endl;
if(l==1){
cout<<ansr-1<<endl;
continue;
}
tt=l-1,len=0;
while(tt){
s[++len]=tt%10;
//cout<<s[len];
tt/=10;
}
memset(f,-1,sizeof f);
int ansl=dfs(len,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,true);
cout<<endl<<ansl<<endl;
cout<<ansr-ansl<<endl;
}
return 0;
}
RE吧,DEVc++和洛谷IDE都有问题。。。