题解:B4185 [中山市赛 2024] 倍数子串

· · 题解

题解:B4185 [中山市赛 2024] 倍数子串

本题思路

发现 n 的范围是 1e6,所以尝试寻找 O(n) 的解法。下面分别分析被 4 整除和被 5 整除。

AC 代码如下


from sys import stdin
input = lambda: stdin.readline().rstrip() #这是python的快读

a = input()
n = len(a)
cnt = 0

for i in range(n):
    temp =  int(a[i]) #末尾数
    if temp in [0,5]:
        cnt += i+1
    elif temp in [2,6]:
        try:
            if int(a[i-1])%2 == 1:
                cnt += i
        except:
            pass
    elif temp in [4,8]:
        cnt += 1
        try:
            if int(a[i-1])%2 == 0:
                cnt += i
        except:
            pass
print(cnt)