给定正整数 K
,你需要找出可以被 K 整除的、仅包含数字 1 的最小正整数 N。
返回 N
的长度。如果不存在这样的 N
,就返回 -1
。
示例 1:
输入:1
输出:1
解释:最小的答案是 N = 1,其长度为 1。
示例 2:
输入:2
输出:-1
解释:不存在可被 2 整除的正整数 N 。
示例 3:
输入:3
输出:3
解释:最小的答案是 N = 111,其长度为 3。
提示:
1 <= K <= 10^5
思路:
先把偶数排除掉,
然后暴力循环,每次处理新的n的时候记得mod一下k,可以有效避免超时。
class Solution(object):
def smallestRepunitDivByK(self, K):
"""
:type K: int
:rtype: int
"""
if K % 2 == 0:
return -1
if K == 1:
return 1
n = 1
cnt = 1
while(n % K != 0):
n = (n * 10 + 1) % K
cnt += 1
if cnt == 100000:
break
if cnt == 100000:
return -1
return cnt