水仙花数

水仙花数

水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数自幂数阿姆斯壮数阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。

C语言实现

输出m和n之间所有的水仙花数。

#include
#include
#include
#include
#include
#include
#include
#include
#include
#define INF 0x3f3f3f3f
typedef long long ll;
using namespace std;

int m,n,a,b,c; //a,b,c分别代表百位、十位和个位
vector<int> res;

int cal(int x){
    return x*x*x;
}

bool judge(int x){
    c=x%10;
    b=(x/10)%10;
    a=(x/100)%10;
    if(cal(a)+cal(b)+cal(c)==x) return true;
    return false;
}


int main(){
    while(scanf("%d%d",&m,&n)!=EOF){
        bool flag=false;
        for(int i=m;i<=n;i++){
            if(judge(i)){
                res.push_back(i);
                flag=true;
            }
        }
        if(flag==false) printf("no\n");
        else{
            for(int i=0;i<res.size();i++){
                printf("%s%d",i==0?"":" ",res[i]);
            }
            printf("\n");
            res.clear();
        }
    }
    return 0;
}

你可能感兴趣的:(数学问题)