제출 #1244496

#제출 시각아이디문제언어결과실행 시간메모리
1244496DeathIsAwePalindrome-Free Numbers (BOI13_numbers)C++20
1.25 / 100
1 ms328 KiB
#include <bits/stdc++.h> #define ll long long #define pb push_back #define mp make_pair #define ff first #define ss second using namespace std; ll mypow(ll a, ll b) { ll val = 1; for (int i=0;i<b;i++) { val *= a; } return val; } ll numofdigits(ll a) { ll val = 0; while (a != 0) { val += 1; a /= 10; } return val; } ll pfnum(ll a) { if (a == 0) return 1; if (a == -1) return 0; ll digitnum = numofdigits(a), ans = 0, base = 1, digit, dummy; if (digitnum == 1) { return a + 1; } ans += 10; for (int i=2;i<digitnum;i++) { ans += (mypow(8, i) / 64) * 9 * 9; } ll bruh = a / mypow(10, digitnum - 2); for (int i=10;i<bruh;i++) { if (i / 10 == i % 10) continue; ans += mypow(8, digitnum - 2); } ll prev1 = bruh % 10, prev2 = bruh / 10; for (int i=digitnum - 2;i>0;i--) { digit = (a / mypow(10, i - 1)) % 10; for (int j=0;j<digit;j++) { if (j == prev1 || j == prev2) continue; ans += mypow(8, i - 1); } if (digit == prev1 || digit == prev2) { ans -= 1; break; } prev2 = prev1; prev1 = digit; } ans += 1; return ans; } int main() { ll a, b; cin >> a >> b; cout << pfnum(b) - pfnum(a - 1) + 1; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...