제출 #860153

#제출 시각아이디문제언어결과실행 시간메모리
860153raphaelpPalindrome-Free Numbers (BOI13_numbers)C++14
100 / 100
1 ms416 KiB
#include <bits/stdc++.h> using namespace std; long long nb(long long N) { if (N == -1) return 0; if (N == 0) return 1; long long mult = 1; int var = 0; while (pow(10, var) <= N) var++; var--; long long tot = 1; int first = 0; long long i = 1; for (int j = 0; i < N; j++) { i = pow(10, j); if (N / i > 9 && (N / i) % 10 == (N / i / 10) % 10) { first = j + 1; } if (N / i > 99 && (N / i) % 10 == (N / i / 100) % 10) { first = j + 1; } i = pow(10, j + 1); } if (first == 0) tot++; for (int i = 1; i < first; i++) { N /= 10; mult *= 8; } for (int i = first; N; i++) { int pos = N % 10; if (N < 10) pos--; if (N > 9 && (N / 10) % 10 < N % 10) pos--; if (N > 99 && (N / 100) % 10 < N % 10) pos--; tot += pos * mult; N /= 10; if (N > 9) mult *= 8; else mult *= 9; } mult = 9; for (int i = 0; i < var; i++) { tot += mult; if (i == 0) mult *= 9; else mult *= 8; } return tot; } int main() { long long a, b; cin >> a >> b; cout << nb(b) - nb(a - 1) << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...