একটি সংখ্যা n "হ্যাপি নাম্বার" কিনা তা যাচাই করতে হবে। হ্যাপি নাম্বার হল এমন সংখ্যা যা যদি এর অঙ্কগুলোর বর্গের যোগফল নেওয়া হয়, এবং এই প্রক্রিয়া বারবার दुहरালে শেষে ১ এসে পৌঁছায়। অন্যথায় এটি সাইকেলে পড়ে যায়। উদাহরণ: ১৯ হ্যাপি নাম্বার, কারণ ১²+৯²=৮২, ৮²+২²=৬৮, ৬²+৮²=১০০, ১²+০²+০²=১।
সমাধানের পদ্ধতি
- রিকারশন এবং ভিজিটেড সেট ব্যবহার করুন।
- বেস কেস:
n == 1হলেTrue। - যদি
nইতিমধ্যে ভিজিটেড হয়,Falseরিটার্ন করুন। n-কে ভিজিটেডে যোগ করুন।n-কে স্ট্রিং বানিয়ে অঙ্কগুলো বর্গ করে যোগফল বের করুন।- রিকারসিভলি নতুন যোগফলের জন্য ফাংশন কল করুন।
উদাহরণ কোড
class Solution(object):
def isHappy(self, n):
return self.solve(n, {})
def solve(self, n, visited):
if n == 1:
return True
if n in visited:
return False
visited[n] = 1
n = str(n)
l = list(n)
l = list(map(int, l))
temp = 0
for i in l:
temp += (i ** 2)
return self.solve(temp, visited)
ob1 = Solution()
op = ob1.isHappy(19)
print("Is Happy:", op)
ইনপুট
19
আউটপুট
Is Happy: True