ধরুন 1 থেকে n পর্যন্ত একটি সংখ্যা রেখা আছে। প্রথমে আমরা 0 অবস্থানে আছি, 1 এ যেতে এক ধাপ লাফিয়ে, তারপর 3 অবস্থানে পৌঁছানোর জন্য দুই স্থান লাফিয়ে, তারপর 6-এ পৌঁছানোর জন্য তিনটি অবস্থানে লাফানো ইত্যাদি। এটি বজায় রেখে আমরা n অবস্থানে পৌঁছাতে পারি কিনা তা আমাদের পরীক্ষা করতে হবে।
সুতরাং, যদি ইনপুটটি n =21 এর মত হয়, তাহলে আউটপুট হবে True, কারণ 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