मान लीजिए हमारे पास एक सरणी nums और एक मान k है। हमें जांचना है कि क्या सरणी के अंत तक पहुंचना संभव है इन ऑपरेशनों को करके: सरणी को पार करें, यदि कोई गैर-अभाज्य मान मिले तो k को 1 घटाएं। यदि कोई अभाज्य मान मिले तो k को उसके प्रारंभिक मान पर रीसेट करें।
उदाहरण के लिए, यदि nums = [8, 5, 6, 7, 8], k = 2 है, तो आउटपुट True होगा क्योंकि: nums[0]=8 (गैर-अभाज्य) → k=1 nums[1]=5 (अभाज्य) → k=2 nums[2]=6 (गैर-अभाज्य) → k=1 nums[3]=7 (अभाज्य) → k=2 nums[4]=8 (गैर-अभाज्य) → k=1, और हम अंतिम इंडेक्स पर हैं।
हल करने का तरीका
- temp := k (प्रारंभिक मान सुरक्षित रखें)
- सरणी के प्रत्येक तत्व के लिए:
- यदि तत्व अभाज्य है, तो k := temp
- अन्यथा k := k - 1
- यदि k ≤ 0 और अगला तत्व मौजूद है और गैर-अभाज्य है, तो False लौटाएं
- True लौटाएं
उदाहरण कोड
def isPrime(num):
if num > 1:
for i in range(2, num):
if num % i == 0:
return False
return True
return False
def solve(arr, k):
temp = k
for i in range(len(arr)):
if isPrime(arr[i]):
k = temp
else:
k -= 1
if k <= 0 and i < (len(arr) - 1) and not isPrime(arr[i + 1]):
return False
return True
nums = [8, 5, 6, 7, 8]
k = 2
print(solve(nums, k))
इनपुट
[8, 5, 6, 7, 8], 2
आउटपुट
True