Computer >> Máy Tính >  >> Lập trình >> Python

Số nguyên nhỏ nhất chia hết cho K trong Python

Giả sử chúng ta có một số nguyên dương K, chúng ta cần tìm số nguyên dương N nhỏ nhất sao cho N chia hết cho K và N chỉ chứa chữ số 1. Ta phải tìm độ dài của N. Nếu không có N như vậy, trả về:1. Vì vậy, nếu đầu vào là 3, thì đầu ra sẽ là 3. Câu trả lời nhỏ nhất sẽ là N =111.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • nếu k chẵn hoặc k chia hết cho 5 thì trả về -1
  • đặt r:=0 và N =1
  • cho tôi trong phạm vi từ 1 đến K + 1
    • r:=(r * 10 + 1) mod k
    • nếu r =0, thì trả về i

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

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))

Đầu vào

11

Đầu ra

2