小红有一个数组,她需要对数组操作 n - 1 次,每次操作有两种选择: 1. 选择数组的最后两个数,记 x 和 y ,将它们从数组中删除,然后将 x + y 的个位数放回数组的最后。 2. 选择数组的最后两个数,记 x 和 y ,将它们从数组中删除,然后将 x × y 的个位数放回数组的最后。 例如,对于数组 [1, 2, 3, 4] ,选择第一种操作后,数组变为 [1, 2, 7] ,选择第二种操作后,数组变为 [1, 4] 。 小红一共操作了 n - 1 次,显然操作后数组只剩下了一个数。小红想知道,这个数等于 0, 1, ..., 9 的方案数分别为多少,答案可能很大,你只需要输出答案对 10^9 + 7 取模的结果。 小红想知道,经过 n - 1 次操作后,结果为 0, 1, ..., 9 的方案数分别为多少,答案可能很大,你只需要输出答案对 10^9 + 7 取模的结果。
一个正整数 n 。代表数组的长度。 一行 n 个正整数 a_1, a_2, ..., a_n ,代表初始数组。 1≤ n ≤ 200000 1≤ a_i ≤ 10^9
一行 10 个整数,第 i 个数代表结果为 i 的方案数。
4 1 2 3 4
1 0 0 0 3 3 0 0 0 1
考点:动态规划 · 基础数学
数据规模 n ≤ 200000 | 限制 1 秒 / 256MB | 标准输入输出
推荐方向:动态规划
把问题拆成子问题,用状态表示「已处理到哪儿」,靠转移方程递推。
思路框架(动态规划 通法 · 非本题专属)
实现要点:一般是「先枚举阶段,再枚举状态,最后枚举决策」三层循环;空间大时可滚动数组优化。
复杂度:时间 O(状态数 × 转移代价) | 空间 O(状态数)
该范式的通法易错点
对照本题
样例 1
4 / 1 2 3 41 0 0 0 3 3 0 0 0 1解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2023年秋招-京东-技术通用岗位-第一批笔试。