মনে করুন একটি k-ডিজিটের সংখ্যা N আছে। N হল আর্মস্ট্রং সংখ্যা যখন প্রতিটি ডিজিটের k-তম ঘাতের যোগফল N-র সমান হয়। আমাদের true রিটার্ন করতে হবে যদি এটি আর্মস্ট্রং সংখ্যা হয়, অন্যথায় false।
এটি সমাধান করার জন্য আমরা নিচের ধাপগুলো অনুসরণ করব:
- power := ডিজিটের সংখ্যা
- temp := n, res = 0
- যখন temp 0 নয়
- res := res + (temp % 10) ^ power
- temp := temp / 10 // পূর্ণসংখ্যা ভাগ
- যদি res = n, true রিটার্ন করুন, অন্যথায় false।
উদাহরণ
নিচের ইমপ্লিমেন্টেশনটি দেখুন ভালো বুঝতে:
import math
class Solution(object):
def poww(self, base, power):
res = 1
while power:
if power & 1:
res *= base
base *= base
power >>= 1
return res
def isArmstrong(self, n):
power = int(math.log10(n)) + 1
temp = n
res = 0
while temp:
res += (self.poww(temp % 10, power))
temp //= 10
return res == n
ob1 = Solution()
print(ob1.isArmstrong(153))
ইনপুট
153
আউটপুট
true