小圆前辈的888 题目大意: 在[0,n]的区间里找到数字末尾为8的数,且贡献为各个位数和,求其贡献总和. 思路: 首先题目问区间[0,n],可以考虑用数位dp写,题目需要计算每个数的数位和,显然我们不能将他当参数放入dfs中最后return,所以我们需要考虑如何在dfs的过程中计算每个数位的贡献。可以参考下面图片。 假设黄点是0,蓝点是1,假设题目是二进制,要计算的是数位末尾为1的各个数位相加,那么上图是区间[0,5]的贡献,明显可以看到,每个节点需要算个贡献就是其数位 ,为以该节点为根的子树的叶子节点是的数量。 代码实现: #include <iostream> #incl...