Welcome to Subscribe On Youtube
1134. Armstrong Number
Description
Given an integer n
, return true
if and only if it is an Armstrong number.
The k
-digit number n
is an Armstrong number if and only if the kth
power of each digit sums to n
.
Example 1:
Input: n = 153 Output: true Explanation: 153 is a 3-digit number, and 153 = 13 + 53 + 33.
Example 2:
Input: n = 123 Output: false Explanation: 123 is a 3-digit number, and 123 != 13 + 23 + 33 = 36.
Constraints:
1 <= n <= 108
Solutions
Solution 1: Simulation
We can first calculate the number of digits $k$, then calculate the sum $s$ of the $k$th power of each digit, and finally check whether $s$ equals $n$.
The time complexity is $O(\log n)$, and the space complexity is $O(\log n)$. Here, $n$ is the given number.
-
class Solution { public boolean isArmstrong(int n) { int k = (n + "").length(); int s = 0; for (int x = n; x > 0; x /= 10) { s += Math.pow(x % 10, k); } return s == n; } }
-
class Solution { public: bool isArmstrong(int n) { int k = to_string(n).size(); int s = 0; for (int x = n; x; x /= 10) { s += pow(x % 10, k); } return s == n; } };
-
class Solution: def isArmstrong(self, n: int) -> bool: k = len(str(n)) s, x = 0, n while x: s += (x % 10) ** k x //= 10 return s == n
-
func isArmstrong(n int) bool { k := 0 for x := n; x > 0; x /= 10 { k++ } s := 0 for x := n; x > 0; x /= 10 { s += int(math.Pow(float64(x%10), float64(k))) } return s == n }
-
function isArmstrong(n: number): boolean { const k = String(n).length; let s = 0; for (let x = n; x; x = Math.floor(x / 10)) { s += Math.pow(x % 10, k); } return s == n; }
-
/** * @param {number} n * @return {boolean} */ var isArmstrong = function (n) { const k = String(n).length; let s = 0; for (let x = n; x; x = Math.floor(x / 10)) { s += Math.pow(x % 10, k); } return s == n; };