제출 #223771

#제출 시각아이디문제언어결과실행 시간메모리
223771BruteforcemanPalindrome-Free Numbers (BOI13_numbers)C++11
100 / 100
5 ms384 KiB
#include <bits/stdc++.h> using namespace std; vector <int> v; long long mem[20][2][2][11][11]; long long dp(int cur, int big, int start, int p1, int p2) { if(cur == v.size()) return 1; int range = big ? 9 : v[cur]; long long &ans = mem[cur][big][start][p1][p2]; if(ans != -1) return ans; ans = 0; for(int i = 0; i <= range; i++) { if(p1 == i || p2 == i) continue; ans += dp(cur + 1, big || (i < v[cur]), start || i, p2, (start || i) ? i : 10); } return ans; } long long count(long long x) { memset(mem, -1, sizeof mem); v.clear(); while(x) { v.push_back(x % 10); x /= 10; } reverse(v.begin(), v.end()); return dp(0, 0, 0, 10, 10); } int main() { long long l, r; cin >> l >> r; cout << count(r) - count(l - 1) << endl; return 0; }

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

numbers.cpp: In function 'long long int dp(int, int, int, int, int)':
numbers.cpp:7:10: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if(cur == v.size()) return 1;
      ~~~~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...