#include<iostream>#include<string>#include<cstring>#include<cmath>#include<ctime>#include<algorithm>#include<utility>#include<stack>#include<queue>#include<vector>#include<set>#include<math.h>#include<map>#include<sstream>usingnamespace std;
typedeflonglong LL;
int L, R;
int f[22], dp[22][12][4];
int ar[22];
LL dfs(int p, int u, int lis, int flg){
if (p <= 1)return1;
if (dp[p][u][lis] != -1 && !flg)return dp[p][u][lis];
int num;
LL ans = 0;
num = flg ? ar[p - 1] : 9;
for (int i = 0; i <= num; i++) {
int flg2 = 0;
if (i == num && flg)flg2 = 1;
if (i == u && lis == 0)ans += dfs(p - 1, i, 0, flg2);
if (i >= u && lis == 1)ans += dfs(p - 1, i, 1, flg2);
if (i <= u && lis == 2)ans += dfs(p - 1, i, 2, flg2);
}
if (!flg)dp[p][u][lis] = ans;
return ans;
}
LL solve(LL u){
LL ans = 0;
int p = 0;
while (u > 0) {
ar[++p] = u % 10;
u /= 10;
}
for (int i = 1; i < ar[p]; i++) {
ans += dfs(p, i, 1, 0) + dfs(p, i, 2, 0) - dfs(p, i, 0, 0);
}
ans += dfs(p, ar[p], 1, 1) + dfs(p, ar[p], 2, 1) - dfs(p, ar[p], 0, 1);
if (p == 0)
return0;
return ans+f[p-1];
}
intmain(){
memset(dp, -1, sizeof dp);
for (int i = 1,x=0; i < 19; i++) {
x = x * 10 + 9;
f[i] = solve(x);
}
int T;
cin >> T;
while (T--) {
int l, r;
scanf("%d%d", &l, & r);
printf("%lld\n", solve(r) - solve(l - 1));
}
return0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】