Submission #1288555

#TimeUsernameProblemLanguageResultExecution timeMemory
1288555Jawad_Akbar_JJPalindrome-Free Numbers (BOI13_numbers)C++20
100 / 100
2 ms588 KiB
#include <iostream> using namespace std; #define int long long int dp[30][30][30][2]; int get(int x, int Ans = 0){ if (x < 10) return x + 1; string s = to_string(x); for (int i=0;i<=20;i++){ for (int j=0;j<=11;j++) for (int k=0;k<=11;k++) for (int l : {0, 1}) dp[i][j][k][l] = 0; } dp[0][11][11][1] = 1; int n = s.size(); for (int i=1;i<=n;i++){ int cur = s[i-1] - '0'; for (int j=0;j<=11;j++){ for (int k=0;k<=11;k++){ for (int d=0;d<10;d++){ if (d == j or d == k or (j + k == 22 and d == 0)) continue; dp[i][k][d][0] += dp[i-1][j][k][0]; if (d == cur) dp[i][k][d][1] += dp[i-1][j][k][1]; if (d < cur) dp[i][k][d][0] += dp[i-1][j][k][1]; } } } dp[i][11][11][0] = 1; } for (int j=0;j<=11;j++){ for (int k=0;k<=11;k++) for (int l : {0, 1}) Ans += dp[n][j][k][l]; } return Ans; } signed main(){ int a, b; cin>>a>>b; cout<<get(b) - get(a - 1)<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...