Skip to content

a040. 阿姆斯壯數

ZeroJudge-a040

C語言參考解答
c
#include<stdio.h>

int digits(int n) {
    int result = 0;
    while (n != 0) {
        n /= 10;
        result += 1;
    }
    return result;
}

int power(int n, int p){
    int result = 1;
    for(int i = 1; i <= p; i++) result *= n;
    return result;
}

int isArm(int n){
    int ori = n;
    int digit = digits(n);
    int sum = 0;
    for (int i = 1; i <= digit; i++) {
        sum += power((n % 10), digit);
        n /= 10;
    }
    if (ori == sum) return 1;
    return 0;
}

int main() {
    int p, q;
    scanf("%d %d", &p, &q);
    int exist = 0;
    for(int i = p; i <= q; i++){
        if (isArm(i)) {
            printf("%d ", i);
            exist = 1;
        }
    }
    if (!exist) printf("none");
}
C++參考解答
cpp
#include<bits/stdc++.h>
using namespace std;

int digits(int n) {
    int result = 0;
    while (n != 0) {
        n /= 10;
        result += 1;
    }
    return result;
}

int power(int n, int p){
    int result = 1;
    for(int i = 1; i <= p; i++) result *= n;
    return result;
}

bool isArm(int n){
    int ori = n;
    int digit = digits(n);
    int sum = 0;
    for (int i = 1; i <= digit; i++) {
        sum += power((n % 10), digit);
        n /= 10;
    }
    if (ori == sum) return true;
    return false;
}

int main() {
    int p, q;
    cin >> p >> q;
    int exist = 0;
    for(int i = p; i <= q; i++){
        if (isArm(i)) {
            cout << i << " ";
            exist = 1;
        }
    }
    if (!exist) cout << "none";
}