摘要: 题意:给出一个区间[a,b],求里面的数中共出现多少个0。最初我和小T讨论的结果是逐位计算,先算个位,再算十位……不过TLE了。后来参考扯男的思路,在此基础上又改进了一下。代码中pow[]就是10的次方,g[i]表示所有 i 位数中含有多少个0(不过这个数组被我砍掉了),s[i]就是g[]的前 i 项和。f[i]不好讲解,例:f[2]表示从00、01……到99中有多少个0,f[3]表示从000、001、……到999中有多少个0。说到思路嘛,拿35017做例子吧。在cal()中,首先计算的是[0,9999]、[10000,29999]两部分,根据已经打好表的数组可直接求。然后再从次高位到最低位循 阅读全文