Submission #1016329

#TimeUsernameProblemLanguageResultExecution timeMemory
1016329delwar_03_Palindrome-Free Numbers (BOI13_numbers)C++17
100 / 100
1 ms604 KiB
#include <bits/stdc++.h> #define int long long #define endl '\n' using namespace std; const int mod = 1e9 + 7; const int N = 1e5 + 10; int dp[20][12][12][2][2]; // (ind, prv, cur, tight, started) void solve() { int l, r; cin>>l>>r; string s; function<int(int, int, int, int, int)> magic = [&] (int ind, int prv, int cur, int tight, int started) { if(ind == s.size()) return 1LL; int &ans = dp[ind][prv][cur][tight][started]; if(~ans) return ans; ans = 0; int mx = tight ? s[ind] - '0' : 9; for(int i = 0; i <= mx; i++) { if(i == 0 && !started) { ans += magic(ind + 1, prv, cur, tight & (i == mx), 0); } else if(i != prv && i != cur) { ans += magic(ind + 1, cur, i, tight & (i == mx), 1); } } return ans; }; auto cnt = [&] (int n) { s = to_string(n); int ans = 0; memset(dp, -1, sizeof dp); ans += magic(0, 10, 10, 1, 0); return ans; }; cout<<cnt(r) - cnt(l - 1)<<endl; } signed main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int t = 1, c = 1; //cin>>t; while(t--) { // cerr<<"Case "<<c++<<": \n"; solve(); } } /* i/p: o/p: */

Compilation message (stderr)

numbers.cpp: In lambda function:
numbers.cpp:15:16: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   15 |         if(ind == s.size()) return 1LL;
      |            ~~~~^~~~~~~~~~~
numbers.cpp: In function 'int main()':
numbers.cpp:51:16: warning: unused variable 'c' [-Wunused-variable]
   51 |     int t = 1, c = 1; //cin>>t;
      |                ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...