水仙花数是指一个 n 位数 ( n大于3 ),它的每个位上的数字的 n 次幂之和等于它本身。

输入;
第一行有一个自然数T,接下来T行数据,每行是一个数M(100<=M<100000000)。
输出:
对于每行要判断的数,输出一行,包含一个"Yes"或者"No",说明是否为水仙花数。

四位的水仙花数共有3个:1634,8208,9474;

1、#include<iostream.h>

#include<math.h>

 bool shuixianhua(int a)

{

int i=0,f[10]={0};

while(a!=0)

{

f[i]=a%10;

i++;

a/=10;

}

double s=0;

int j;

for(j=0;j<i;j++)

{

s+=pow(f[j],i);

}

return (s==a)?true:false;

}

 int main()

{

int i,n,d;

bool w;

cin>>n;

for(i=0;i<n;i++)

{

cin>>d;

w=shuixianhua(d);

if(w)

{

cout<<"yes"<<endl;

}else{

cout<<"no"<<endl;

}

}

return 0;

}

2、program sxh;

var a,b,c,d:integer;

begin

for a:=100 to 999 do begin

b:=a mod 10;

c:=a mod 100 div 10;

d:=a div 100;

if b*b*b+c*c*c+d*d*d=a then writeln(a);

end;

end.

也可用C语言:

#include <stdio.h>

int main(void)

{

int a,b,c;

for(a=1;a<=9;a++)

for(b=0;b<=9;b++)

for(c=0;c<=9;c++)

if(100*a+10*b+c==a*a*a+b*b*b+c*c*c)

printf("%d%d%d\n",a,b,c);

return 0;

}

扩展资料:

(非高精度)

以下为在各种编程语言中实现求取水仙花数的方法(非高精度)。

Python代码实现

方法零:life is short,use python

for i in range(1000,10000):

a = int(i/1000)

b = int(i%1000/100)

c = int(i%100/10)

d = int(i%10)

if pow(a,4) + pow(b,4) + pow(c,4) + pow(d,4) ==i:

print(i)

参考资料来源:百度百科-水仙花数

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-05-30
#include<iostream.h>
#include<math.h>

bool shuixianhua(int a)
{
int i=0,f[10]={0};
while(a!=0)
{
f[i]=a%10;
i++;
a/=10;
}
double s=0;
int j;
for(j=0;j<i;j++)
{
s+=pow(f[j],i);
}
return (s==a)?true:false;
}

int main()
{
int i,n,d;
bool w;
cin>>n;
for(i=0;i<n;i++)
{
cin>>d;
w=shuixianhua(d);
if(w)
{
cout<<"yes"<<endl;
}else{
cout<<"no"<<endl;
}
}
return 0;
}

本回答被网友采纳
相似回答