양의 정수 K가 있다고 가정하고 N이 K로 나눌 수 있는 가장 작은 양의 정수 N을 찾아야 하고 N에는 숫자 1만 포함됩니다. N의 길이를 찾아야 합니다. 그런 N이 없으면 다음을 반환합니다. 1. 따라서 입력이 3과 같으면 출력은 3이 됩니다. 가장 작은 답은 N =111입니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- k가 짝수이거나 k가 5로 나누어지면 -1을 반환합니다.
- r :=0 및 N =1로 설정
- 1 ~ K + 1 범위의 i에 대해
- r :=(r * 10 + 1) 모드 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