मान लीजिए हमारे पास एक सकारात्मक पूर्णांक K है, हमें सबसे छोटा सकारात्मक पूर्णांक N ढूंढना होगा जैसे कि N K से विभाज्य हो, और N में केवल अंक 1 हो। हमें N की लंबाई ढूंढनी है। यदि ऐसा कोई N नहीं है, तो -1 लौटाएं। इसलिए यदि इनपुट 3 जैसा है, तो आउटपुट 3 होगा। सबसे छोटा उत्तर N = 111 होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- यदि k सम है, या k 5 से विभाज्य है, तो -1 लौटाएं
- r := 0 और N = 1 सेट करें
- i के लिए 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