जब यह जांचने की आवश्यकता होती है कि किसी संख्या के विशिष्ट बेस में लगातार शून्य हैं या नहीं, तो एक मेथड परिभाषित की जाती है जो संख्या और बेस को पैरामीटर के रूप में लेती है, और दूसरी मेथड का उपयोग करके Yes या No लौटाती है यह इस बात पर निर्भर करता है कि बेस मौजूद है या नहीं।
उदाहरण
def check_consecutive_zero(N, K):
my_result = convert_to_base(N, K)
if (check_n(my_result)):
print("Yes")
else:
print("No")
def convert_to_base(N, K):
weight = 1
s = 0
while (N != 0):
r = N % K
N = N // K
s = r * weight + s
weight *= 10
return s
def check_n(N):
res = False
while (N != 0):
r = N % 10
N = N // 10
if (res == True and r == 0):
return False
if (r > 0):
res = False
continue
res = True
return True
N, K = 8, 2
print("क्या संख्या में बेस में लगातार शून्य हैं?")
check_consecutive_zero(N, K)
आउटपुट
क्या संख्या में बेस में लगातार शून्य हैं? No
व्याख्या
'check_consecutive_zero' नामक एक मेथड परिभाषित की जाती है जो संख्या और बेस लेती है।
'convert_to_base' मेथड का उपयोग दी गई संख्या को विशिष्ट बेस में बदलने के लिए किया जाता है।
आउटपुट विशिष्ट बेस का है या नहीं, इस पर निर्भर करते हुए Yes या No लौटाया जाता है।
'check_n' मेथड का उपयोग यह जांचने के लिए किया जाता है कि संख्या 0 है या नहीं।
N और K के मान परिभाषित किए जाते हैं।
N और K पास करके 'check_consecutive_zero' मेथड को कॉल किया जाता है।
आउटपुट कंसोल पर प्रदर्शित होता है।
कोड विश्लेषण और सुधार
उदाहरण के लिए: N=8, K=2
- 8 बाइनरी (बेस 2) में = 1000
- 1000 में लगातार तीन शून्य हैं
- लेकिन आउटपुट "No" दिखाता है - कोड में बग है
बग विश्लेषण
check_n फ़ंक्शन का लॉजिक गलत है। यह लगातार शून्य का पता लगाने के बजाय, अंतिम शून्य के बाद गैर-शून्य अंक की जांच करता है।
सही कार्यान्वयन
def check_consecutive_zero(N, K):
# संख्या को बेस K में बदलें (स्ट्रिंग के रूप में)
digits = []
while N > 0:
digits.append(str(N % K))
N //= K
base_representation = ''.join(reversed(digits)) if digits else '0'
# लगातार शून्य जांचें
if '00' in base_representation:
print("Yes")
else:
print("No")
# या अधिक सामान्य: K या अधिक लगातार शून्य
def has_k_consecutive_zeros(N, K, k=2):
digits = []
while N > 0:
digits.append(str(N % K))
N //= K
base_rep = ''.join(reversed(digits)) if digits else '0'
return '0' * k in base_rep
टेस्ट केस
N=8, K=2 → बाइनरी: 1000 → "Yes" (लगातार 3 शून्य)
N=5, K=2 → बाइनरी: 101 → "No"
N=9, K=3 → टर्नरी: 100 → "Yes" (लगातार 2 शून्य)