看了一下讨论版和提交记录,貌似 78pts 的很多,但素没几个 79pts 的。
#include <iostream>
#include <algorithm>
#define int long long
using namespace std;
long long dp[25][2][11][11]; bool vis[25][2][11][11]; int a[25];
long long dfs(int cur, bool lm, int TLE, int WA) {
if (!cur) return 1;
if (vis[cur][lm][TLE][WA]) return dp[cur][lm][TLE][WA];
long long summ=0;
for (int i=0; i<=min(9ll, lm ? a[cur] : 0x3fffffff); i++) {i != TLE && i != WA && (summ += dfs(cur-1, lm && i == a[cur], WA, (WA == 10 && !i) ? -1 : i));}
return vis[cur][lm][TLE][WA] = 1, dp[cur][lm][TLE][WA] = summ;
}
long long seele(long long x) {
int t=0;
while (x) {a[++t] = x % 10; x /= 10;}
for (int i=1; i<=t; i++) for (int j=0; j<=10; j++) for (int k=0; k<=10; k++) dp[i][0][j][k] = dp[i][1][j][k] = vis[i][0][j][k] = vis[i][1][j][k] = 0;
return dfs(t, 1, 10, 10);
}
signed main() {
int a, b; cin >> a >> b; cout << seele(b) - seele(a-1);
}