Submission #711947

#TimeUsernameProblemLanguageResultExecution timeMemory
711947lukameladzePalindrome-Free Numbers (BOI13_numbers)C++14
100 / 100
2 ms480 KiB
# include <bits/stdc++.h> using namespace std; #define f first #define s second #define int long long #define pii pair <int, int> #define pb push_back const int N = 3e5 + 5; int t,n,a[N]; int dp[21][11][11][2][2][2]; int get(int x) { if (x < 0) return 0; if (x == 0) return 1; string s = to_string(x); memset(dp, 0, sizeof(dp)); dp[0][10][10][0][0][0] = 1; s = "@" + s; for (int i = 1; i < (int)s.size(); i++) { for (int cur = 0; cur <= 9; cur++) { for (int pr_lst = 0; pr_lst <= 10; pr_lst++) { for (int lst = 0; lst <= 10; lst++) { for (int less = 0; less <= 1; less++) { for (int started = 0; started <= 1; started++) { int new_less = 0; if (!less && cur > (int)(s[i] - '0')) continue; if (less || cur < (int)(s[i] - '0')) { new_less = 1; } else new_less = 0; int st = (started || (cur > 0)); if ((cur != pr_lst && cur != lst) || (!started)) dp[i][(started ? lst : 10)][cur][0][new_less][st] += dp[i - 1][pr_lst][lst][0][less][started], dp[i][(started ? lst : 10)][cur][1][new_less][st] += dp[i - 1][pr_lst][lst][1][less][started]; else dp[i][(started ? lst : 10)][cur][1][new_less][st] += (dp[i - 1][pr_lst][lst][0][less][started] + dp[i - 1][pr_lst][lst][1][less][started]); } } } } } } int ans = 0; for (int i = (int)s.size() - 1; i < (int)s.size(); i++) { for (int pr_lst = 0; pr_lst <= 10; pr_lst++) { for (int lst = 0; lst <= 10; lst++) { for (int st = 0; st <= 1; st++) { ans += dp[i][pr_lst][lst][0][0][st]; ans += dp[i][pr_lst][lst][0][1][st]; } } } } return ans; } main() { std::ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0); int a, b; cin>>a>>b; cout<<get(b) - get(a - 1)<<"\n"; }

Compilation message (stderr)

numbers.cpp:54:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   54 | main() {
      | ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...