Submission #731067

#TimeUsernameProblemLanguageResultExecution timeMemory
731067BoomydayPalindrome-Free Numbers (BOI13_numbers)Pypy 3
96.67 / 100
73 ms19460 KiB

a, b = map(int, input().split())




dp = [[[0 for i in range(11)] for i in range(11)] for i in range(20)]
dp[0][10][10] = 1


for dig in range(1, 19):

    for cur in range(10):
        for prev in range(11):
            if cur == prev:

                continue
            for prev2 in range(11):
                if prev2 == cur:

                    continue
                dp[dig][cur][prev] += dp[dig-1][prev][prev2]


## dig = 1


##d = 5


"""
ans = 1
for dig in range(1, d+1):
    for cur in range(1, 11):
        for prev in range(11):
            ans += dp[dig][cur][prev]

"""


def solve(x):

    if x == 0:
        return 0
    ans = 1
    x = list(str(x))

    for dig in range(1, len(x)):
        for cur in range(1, 11):
            for prev in range(11):
                ans += dp[dig][cur][prev]

    #print(ans)

    chk = [11,11]
    bad = False
    for i, ch in enumerate(x):
        #if i == len(x)-1:   continue
        d = len(x) - i

        #print(d, ch)
        val = int(ch)
        for cur in range(0, val):
            if bad:
                continue
            if chk[-1] == chk[-2] and chk[-1] != 11:
                bad = True
                continue


            if chk[-1] == 11 and cur == 0:
                continue
            if cur == chk[-1] or cur == chk[-2]:
                continue
            for prev in range(11):
                if prev == chk[-1]: continue
                ans += dp[d][cur][prev]

        #print(ans)

        if val == chk[-2]:
            bad = True

        chk[-2] = chk[-1]
        chk[-1] = val

    return ans


print(solve(b+1)-solve(a))

"""

ans_brute = 0

for n in range(a, b+1):
    st = str(n)
    is_pal = False

    for l in range(len(st)):
        for r in range(l+2, len(st)+1):
            if st[l:r] == st[l:r][::-1]:
                is_pal = True

    if not is_pal:
        ans_brute+=1


print(ans_brute)
#print(ans, ans_brute)"""







#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...