제출 #522416

#제출 시각아이디문제언어결과실행 시간메모리
522416Hamed5001Palindrome-Free Numbers (BOI13_numbers)C++14
100 / 100
1 ms332 KiB
#include <bits/stdc++.h> using namespace std; long long dp[20][11][11][2][2]; long long fun(int idx, string &s, pair<int, int> last, bool lz, bool sm) { if (idx == s.size()) return 1; auto &ret = dp[idx][last.first][last.second][lz][sm]; if (~ret) return ret; ret = 0; if (lz) ret += fun(idx + 1, s, last, 1, 1); for (int i = 0; i < 10; ++i) { if (lz && i == 0) continue; if (i == last.first || i == last.second) continue; if (i > s[idx] - '0' && sm) { ret += fun(idx + 1, s, {i, last.first}, 0, sm); } else if (i == s[idx] - '0') { ret += fun(idx + 1, s, {i, last.first}, 0, sm); } else if (i < s[idx] - '0') { ret += fun(idx + 1, s, {i, last.first}, 0, 1); } } return ret; } long long calc(long long limit) { if (limit < 0) return 0; string s = to_string(limit); memset(dp, -1, sizeof dp); return fun(0, s, {10, 10}, 1, 0); } void solve() { long long l, r; cin >> l >> r; cout << calc(r) - calc(l - 1); } int main() { ios_base::sync_with_stdio(false); cin.tie(0); solve(); return 0; }

컴파일 시 표준 에러 (stderr) 메시지

numbers.cpp: In function 'long long int fun(int, std::string&, std::pair<int, int>, bool, bool)':
numbers.cpp:7:13: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    7 |     if (idx == s.size()) return 1;
      |         ~~~~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...