สมมติว่าเรามีจำนวนเต็มบวก 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