मान लीजिए 1 से n तक एक संख्या रेखा है। पहले हम स्थिति 0 पर हैं, स्थिति 1 पर जाने के लिए एक कदम कूदें, फिर स्थिति 3 तक पहुंचने के लिए दो स्थान कूदें, फिर स्थिति 6 तक पहुंचने के लिए तीन स्थान कूदें और इसी तरह। हमें जांचना है कि क्या इसे बनाए रखते हुए, हम स्थिति n तक पहुंच सकते हैं या नहीं।
तो, यदि इनपुट n = 21 है, तो आउटपुट True होगा, क्योंकि 1+2+3+4+5+6 = 21
इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:
- j:= (1 + square root of (1+8*n)) / 2
- यदि |j - j का पूर्णांक भाग| <= 0, तो
- True वापस करें
- अन्यथा False वापस करें
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
from math import sqrt def solve(n): j=(1+sqrt(1+8*n))/2 if abs(j-int(j))<=0: return True else: return False n = 21 print(solve(n))
इनपुट
21
आउटपुट
True