제출 #564199

#제출 시각아이디문제언어결과실행 시간메모리
564199SSRSPalindrome-Free Numbers (BOI13_numbers)C++14
100 / 100
1 ms340 KiB
#include <bits/stdc++.h> using namespace std; long long solve(long long N){ string S = to_string(N); int L = S.size(); vector<vector<vector<vector<long long>>>> dp(L + 1, vector<vector<vector<long long>>>(2, vector<vector<long long>>(10, vector<long long>(10, 0)))); dp[L][1][0][0] = 1; long long ans = 0; if (N > 0){ ans++; } for (int i = L; i >= 0; i--){ for (int j = 0; j < 2; j++){ for (int k = 0; k < 10; k++){ for (int l = 0; l < 10; l++){ if (!(i == 0 && j == 1) && l > 0){ ans += dp[i][j][k][l]; } if (i > 0){ for (int m = 0; m < 10; m++){ if (!(i < L && m == l) && !(i < L - 1 && m == k)){ int j2 = j; if (m > S[i - 1] - '0'){ j2 = 1; } else if (m < S[i - 1] - '0'){ j2 = 0; } dp[i - 1][j2][l][m] += dp[i][j][k][l]; } } } } } } } return ans; } int main(){ long long a, b; cin >> a >> b; cout << solve(b + 1) - solve(a) << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...