顺丰笔试: 幸运数
n = 21857711 nums = str(n) length = len(nums) count = 0 i = 0 #统计n位数中满足情况的个数,逐位遍历 for char in nums: num = int(char) i += 1 if num < 4: break if num > 4 and num < 7: count += pow(2, (length - i)) break if num > 7: count += pow(2, (length - i + 1)) break if num is 7: count += pow(2, (length - i)) if i is length: count += 1 ans = count % (pow(10, 9)+7) #统计小于n位的 for j in range(1, length): ans += (pow(2, j) % (pow(10, 9)+7)) print(ans % (pow(10, 9)+7))