假设我们有一个正整数K,我们需要找到最小的正整数N,使得N可以被K整除,并且N仅包含数字1。我们必须找到N的长度。如果没有这样的N,则返回- 1。因此,如果输入为3,则输出为3。最小的答案为N = 111。
为了解决这个问题,我们将遵循以下步骤-
如果k为偶数,或者k可被5整除,则返回-1
设置r:= 0和N = 1
当我在1到K + 1的范围内
r:=(r * 10 +1)mod k
如果r = 0,则返回i
让我们看下面的实现以更好地理解-
class Solution(object): def smallestRepunitDivByK(self, K): if K%2==0 or K%5 ==0: return -1 r = 0 N=1 for i in range(1,K+1): r = (r*10 + 1)%K if r == 0: return i ob = Solution()print(ob.smallestRepunitDivByK(11))
11
输出结果
2