今天其实先就把专题里面关于BSGS算法&拓展BSGS算法的题目水了一下,挺简单的,毕竟我上一篇博客存的模版挺好用,我也没着急去看哈希表的东西,毕竟对于我来说莫比乌斯反演和刷《组合数学》上的课后题才是重点。
之前还做了一道比较有意思的题目,纯粹组合数学推理的,就是这道题目让我又感觉必须把数学书本上的课后题必须做认真做完。
How many 0's?
题意:给出一个数n1,n2,计算当n1<=m<=n2时,m中出现0的总个数。
这个题一看就知道先算出从1到n有多少个0,然后sum(n2)-sum(n1-1),可我自己的办法是按照位置dfs,这是超时的,最后请教其他队友于是恍然大悟。
就是按照数的每一位进行判断,将该位变成0,形成的新数必定小于等于原数,这样分类讨论:1,当该位不是0,那么就是前面的数变化总数乘后面总数(后面随便变)。2,当该位是0,前面变化数乘后面数字。我举个例子。
123056,这个数我们枚举到3,就是12*999。当我们枚举到0,就是123*56。
我解释的不好,推荐一位大佬解释的清楚。
推荐:http://blog.csdn.net/sdau20163942/article/details/79271665