#include<bits/stdc++.h>
#define double long double
#define int128 __int128
#define int long long
#define re register
#define in inline
#define Pi pair<int,int>
#define vi vector<int>
#define max(a,b) ((a)>(b)?a:b)
#define min(a,b) ((a)<(b)?a:b)
#define ls x<<1
#define rs x<<1|1
#define dx i+xx[k]
#define dy j+yy[k]
#define debug cout<<"wuyu"<<endl;
using namespace std;
const int INF=0x3f3f3f3f;
const int N=1e6+19;
const int M=1e6+10;
const double eps=1e-5;
in int read(){ re int x=0,f=0;re char c=getchar(); while(!isdigit(c)) f|=(c=='-'),c=getchar(); while(isdigit(c)) x=(x<<3)+(x<<1)+c-'0',c=getchar(); return f?-x:x;}
in void write(re int x){ if(x<0) putchar('-'),x=-x; if(x>9) write(x/10); putchar(x%10+'0');}
int f[2][20][50][2521];
int b[50];
int d[2521];
int a[20];
int gcd(int a,int b){
if(b==0) return a;
return gcd(b,a%b);
}
void init(){
int x=2520;
for(int i=1;i<=2520;i++){
if(x%i==0){
b[++b[0]]=i;
d[i]=b[0];
}
}
b[0]=1;
}
int dfs(int less,int dep,int l,int mod){
if(!dep) return (mod%b[l]==0);
// if(~f[less][dep][l][mod]) return f[less][dep][l][mod];
int ret=0;
int ed= (less) ? 9:a[dep];
for(int i=0;i<=ed;i++){
ret+=dfs(less||(i<ed),dep-1,d[i*b[l]/gcd(i,b[l])],(mod*10+i)%2520);
}
// f[less][dep][l][mod]=ret;
return ret;
}
/*d[b[i]]==i
2520*/
int work(int n){
a[0]=0;
while(n){
a[++a[0]]=n%10;
n/=10;
}
/* for(int i=a[0];i>=1;i--){
cout<<a[i];
}
cout<<endl;*/
memset(f,-1,sizeof(f));
return dfs(0,a[0],0,0);
}
signed main(){
int T;
T=read();
init();
while(T--){
int L,R;
L=read();R=read();
cout<<work(R)-work(L-1)<<endl;
}
return 0;
}
对于 1
1 1000 的输入我的输出是 227
答案是 138