Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 K로 나눌 수 있는 가장 작은 정수

<시간/>

양의 정수 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