Submission #860036

#TimeUsernameProblemLanguageResultExecution timeMemory
860036raphaelpPalindrome-Free Numbers (BOI13_numbers)C++14
72.50 / 100
1 ms360 KiB
#include <bits/stdc++.h>
using namespace std;
long long nb(long long N)
{
    if (N == 0)
        return 0;
    long long mult = 1;
    long long tot = 0;
    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 > 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;
    }
    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...