ধরুন 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