Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

จำนวนเต็มที่น้อยที่สุดหารด้วย K ใน Python


สมมติว่าเรามีจำนวนเต็มบวก K เราต้องหาจำนวนเต็มบวกที่เล็กที่สุด N โดยที่ N หารด้วย K ลงตัว และ N มีเฉพาะตัวเลข 1 เราต้องหาความยาวของ N หากไม่มี N ดังกล่าว ให้คืนค่า - 1. ดังนั้นหากอินพุตเท่ากับ 3 ผลลัพธ์จะเป็น 3 คำตอบที่น้อยที่สุดจะเป็น N =111

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ถ้า k เป็นเลขคู่ หรือ k หารด้วย 5 ลงตัว ให้คืนค่า -1
  • ตั้งค่า r :=0 และ N =1
  • สำหรับฉันอยู่ในช่วง 1 ถึง K + 1
    • r :=(r * 10 + 1) mod 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