제출 #406592

#제출 시각아이디문제언어결과실행 시간메모리
406592iulia13Palindrome-Free Numbers (BOI13_numbers)C++14
93.75 / 100
2 ms352 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long ll dp[10][10][20][2]; ///cifrele i, j; lungime k; am voie sau nu cifra string s; ll calc(int fst, int sec, int n, int da) { int i, j; if (n >= s.size()) return 1; if (dp[fst][sec][n][da] != -1) return dp[fst][sec][n][da]; ll rez = 0; if (da) { for (i = 0; i < 10; i++) if (i != fst && i != sec) rez += calc(sec, i, n + 1, 1); } else { for (i = 0; i < s[n] - '0'; i++) if (i != fst && i != sec) rez += calc(sec, i, n + 1, 1); if (s[n] - '0' != fst && s[n] - '0' != sec) rez += calc(sec, s[n] - '0', n + 1, 0); } dp[fst][sec][n][da] = rez; return rez; } ll ans(ll nr) { int i,j; s.clear(); if (nr < 0) return 0; if (nr == 0) return 1; memset(dp, -1, sizeof(dp)); while (nr) { s = s + char('0' + nr % 10); nr /= 10; } reverse(s.begin(), s.end()); ll a = 0; for (i = 1; i < s[0] - '0'; i++) a += calc(i, i, 1, 1); a += calc(s[0] - '0', s[0] - '0', 1, 0); for (i = 2; i <= s.size(); i++) for (j = 1; j <= 9; j++) a += calc(j, j, i, 1); return a; } int main() { ll a, b; cin >> a >> b; cout << ans(b) - ans(a - 1); return 0; }

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

numbers.cpp: In function 'long long int calc(int, int, int, int)':
numbers.cpp:10:11: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   10 |     if (n >= s.size())
      |         ~~^~~~~~~~~~~
numbers.cpp:9:12: warning: unused variable 'j' [-Wunused-variable]
    9 |     int i, j;
      |            ^
numbers.cpp: In function 'long long int ans(long long int)':
numbers.cpp:51:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   51 |     for (i = 2; i <= s.size(); i++)
      |                 ~~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...