All Possible Digits

发布时间 2023-11-02 15:11:19作者: Zlc晨鑫

here

单调性:多加几次,出现的数不会变少,肯定可以二分。

最多操作\(p-1\)次,也就是最多进位一次。

而且最多只会进位一次,对于最后一位在加的过程中出现的值,直接用式子算,然后为了统计出现的数的次数,在其他位的数,如果在最后一位变化的范围里,就不应该加1。

但是题解又有不用二分的做法……

首先不进位,肯定说明\([0,a[n])\)的数都出现过了。

这个时候统计一下\(a[1,n-1]\)判断一下是否要进位。

如果确实不用进位,那么其它位都不会变,只需要加到没出现的最大值即可。

这个没出现的最大值直接从\(p-1\)开始枚举,第一个没出现的就行(这样是\(O(n)\)而非\(O(p)\)的)。

如果要进位,先统计进位前的位数,再统计进位后的结果,同样是要加到没出现的最大值,但是注意最后一位还没考虑呢。

考虑最后一位,其实就是\(x\ge a[n]\)都已经出现过了,所以是\(x<a[n]\)的没出现的最大值。

一样\(O(n)\)求,完事。