একটি পজিটিভ ইন্টিজার K দেওয়া আছে। সবচেয়ে ছোট পজিটিভ ইন্টিজার N বের করতে হবে যাতে N, K দিয়ে বিভাজ্য হয় এবং N-এ শুধু ডিজিট ১ থাকে। N-এর দৈর্ঘ্য রিটার্ন করতে হবে। যদি এমন N না থাকে, তবে -1 রিটার্ন।
ইনপুট 3 হলে আউটপুট 3। কারণ N = 111।
সমাধানের ধাপসমূহ
- যদি K জোড় সংখ্যা হয় বা 5 দিয়ে বিভাজ্য হয়, তবে -1 রিটার্ন
- r := 0, N = 1 সেট করুন
- i = 1 থেকে K+1 পর্যন্ত লুপ:
- 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