题解 | 小红删数字

小红删数字

https://www.nowcoder.com/practice/1287555d90d34de3be4ae338b18c1fbd

import sys


MOD = 10**9 + 7

def solve(arr):
    n = len(arr)
    dp_prev = [0] * 10
    if (len(arr)==0):
        return dp_prev
    if (len(arr)==1):
        if (arr[-1] < 10):
            dp_prev[arr[-1]% 10] = 1
            return dp_prev
        else:
            return dp_prev
    dp_prev[arr[-1]% 10] = 1

    for i in range(n-2, -1, -1):
        dp_curr = [0] * 10
        current_num = arr[i]
        for a in range(10):
            count = dp_prev[a]
            if count == 0:
                continue
            add = (current_num + a) % 10
            mul = (current_num * a) % 10
            dp_curr[add] = (dp_curr[add] + count) % MOD
            dp_curr[mul] = (dp_curr[mul] + count) % MOD
        dp_prev = dp_curr
    
    return dp_prev
    


# 读取输入
b = []
for line in sys.stdin:
    a = line.split()
    b.append(a)

# 提取输入数据
n = int(b[0][0])
a = [int(b[1][i]) for i in range(n)]

# 计算并输出结果
ans = solve(a)
ans = ' '.join(map(str, ans))
# 输出最终结果
#print(ans)
print(ans)

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-09 11:15
点赞 评论 收藏
分享
每晚夜里独自颤抖:要求太多的没必要理
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务