题解 | #选牛比赛#

选牛比赛

https://www.nowcoder.com/practice/75df501809d14532a00e747666587873

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param digits string字符串一维数组
# @param n int整型
# @return int整型
#
class Solution:
    def countEligibleCows(self, digits: List[str], n: int) -> int:
        # write code here
        digit = [int(d) for d in digits]
        limit = [int(d) for d in str(n)]
        if len(limit) == 1: return sum(d<=limit[0] for d in digit)
        q = len(digit)
        num = q*(q**(len(limit)-1)-1)//(q-1)    # a0 * (q^(n-1)-1)/(q-1)
        for i in range(len(limit)):
            opt = sum(d<limit[i] for d in digit)
            num += opt * q*(q**(len(limit)-i-1)-1)//(q-1)
            if limit[i] not in digit: break
        return num

全部评论

相关推荐

重生2012之我是java程序员:换个稍微正式点的照片吧
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务