本文主要是介绍Leetcode 483. Smallest Good Base [Python],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
从上面的图可以看得到当a为1的时候,r就是这个题目要求的good base。
结合评论区大佬(
https://leetcode.com/problems/smallest-good-base/discuss/1281388/python-solution-beat-100percent )
的图片解释:
m最大的情况下也不会超过log以2为底n的结果。所以从这个数为最大的m开始往2遍历。这个时候k怎么求呢,通过上述图片,可以尝试 k = int(n (1/m))。好了,有m 有k了。通过wiki给的计算公式 当n == (K(m+1)- 1)//(k - 1)的时候,就可以返回k了,而如果找不到。可以知道 n-1一定是一个解。1*(n-1)*0 + 1(n-1)**1。
至于为什么m+1,因为至少得是3个数的加和,否则m = 1的时候,也就是1*(n-1)*0 + 1(n-1)**1的情况。
class Solution: def smallestGoodBase(self, n: str) -> str:n = int(n)maxpow = int(math.log(n,2))for power_num in range(maxpow, 1, -1):k = int(n ** (1/power_num))if (k**(power_num+1)-1)//(k-1) == n:return str(k)return str(n-1)
这篇关于Leetcode 483. Smallest Good Base [Python]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!