Skip to content

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.

1
2
3
4
5
6
7
8
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
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
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;
    }
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
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;
    }
};
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
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
}
1
2
3
4
5
6
7
8
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;
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
/**
 * @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;
};

Comments