मान लीजिए कि 1 से n तक एक संख्या रेखा है। सबसे पहले हम स्थिति 0 पर हैं, 1 जाने के लिए एक कदम कूदें, फिर स्थिति 3 पर पहुंचने के लिए दो स्थान की छलांग लगाएं, फिर 6 पर पहुंचने के लिए तीन स्थान की छलांग लगाएं और इसी तरह। हमें यह जांचना होगा कि इसे बनाए रखते हुए, हम स्थिति n पर पहुंच सकते हैं या नहीं।
इसलिए, यदि इनपुट n =21 जैसा है, तो आउटपुट ट्रू होगा, क्योंकि 1+2+3+4+5+6 =21
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- j:=(1 + वर्गमूल (1+8*n)) / 2
- अगर |j - j का int भाग| <=0, फिर
- सही लौटें
- अन्यथा झूठी वापसी
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
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