1015. 可被 K 整除的最小整數
阿新 • • 發佈:2020-07-22
給定正整數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
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/smallest-integer-divisible-by-k
首先想到的是搞個迴圈一直除直到得到結果,而對於return -1的情況就要找規律了
- 1 % 5 等於 1
- 11 % 5 等於 1
- 111 % 5 等於 1
- 1111 % 5 等於 1
- 11111 % 5 等於 1
- ...
- 1 % 6 等於 1
- 11 % 6 等於 5
- 111 % 6 等於 3
- 1111 % 6 等於 1
- 11111 /% 6 等於 5
- ...
會發現return -1的數會得到迴圈節,程式碼就好寫了
class Solution: def smallestRepunitDivByK(self, K: int) -> int: if K%10 in [2,4,5,6,8,10]: return -1//先排掉一些明顯的 vis=set() mod=0 for i in range(1,K+1): mod=(mod*10+1)%K if mod in vis: return -1//發現進入迴圈直接return -1 if mod==0: return i vis.add(mod)