Submission #631261

#TimeUsernameProblemLanguageResultExecution timeMemory
631261uyluluPalindrome-Free Numbers (BOI13_numbers)C++14
72.50 / 100
1 ms340 KiB
#include<bits/stdc++.h> using namespace std; #define int long long #define ld long double #define endl "\n" const int N = 18; int dp[N + 1][12][12][2]; string s; int f(int pos,int i1,int i2,int tight) { if(pos == s.size()) return 1; if(dp[pos][i1][i2][tight] != -1) return dp[pos][i1][i2][tight]; int res = 0,lim = 9; if(tight) { lim = s[pos] - '0'; } for(int i = 0;i <= lim;i++) { if(i == i1 || i == i2) continue; int ns = 0; if(i == lim) ns = tight; res += f(pos + 1,i2,i,ns); } return dp[pos][i1][i2][tight] = res; } int help(int x) { s = to_string(x); memset(dp,-1,sizeof(dp)); return f(0,11,11,1); } signed main() { // freopen("in.txt","r",stdin); // freopen("out.txt","w",stdout); int a,b; cin>>a>>b; cout<<help(b) - help(a - 1); }

Compilation message (stderr)

numbers.cpp: In function 'long long int f(long long int, long long int, long long int, long long int)':
numbers.cpp:15:9: 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(pos == s.size()) return 1;
      |     ~~~~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...