1. 程式人生 > >C++水仙花數的求法

C++水仙花數的求法

題目描述

水仙花數是指一個N位正整數(N≥3),它的每個位上的數字的N次冪之和等於它本身。
例如:153=1^3+5^3+3^3
8208 = 8^4+2^4+0^4+8^4 這道題請寫出程式判斷輸入的數是否為水仙花數

輸入描述:

首先輸入正整數 n,表示需要判斷的數的個數 (1<=n<=100)
隨後每一行輸入一個數 Ai,對於每次輸入判斷 Ai 是否為水仙花數

輸出描述:

每次判斷 Ai 輸出判斷結果:
如果是,輸出 yes
否則輸出 no

輸入

3
111
153
222

輸出

no
yes
no

//用codeblock測試時pow函式有點問題,5的3次永遠是124,但是提交過了,注意水仙花數數字大於3位
#include <stdio.h>
#include <math.h>
int main(){
    int n;
    scanf("%d",&n);
    while(n--){
        int m,m1,count=1,sum=0,m2,m3;
        scanf("%d",&m);
        m1=m;
        m3=m;
        while(m1>9){
            m1/=10;
            count++;
        }
        while(m>9){
           m2=m%10;
           sum+=pow(m2,count);
           m/=10;
        }sum+=pow(m,count);
        if(m3==sum){
            printf("yes\n");
        }
        else{
            printf("no\n");
        }
    }
    return 0;
}