联大一般性辩论 中国:C语言编程输出所有的“水仙花数”。

来源:百度文库 编辑:神马品牌网 时间:2024/04/19 07:35:38
输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是一水仙花数,因为153=1的立方+5的立方+3的立方。

main()
{
int ge,shi,bai,number; /*定义个位,十位,百位*/
for(number=100;number<1000;number++)
{
bai=number/100;
shi=(number%100)/10;
ge=number%10;
if(number==bai*bai*bai+shi*shi*shi+ge*ge*ge) /*若满足条件则显示*/
printf("\nnumber=%d\n",number);
}
getch();
}

楼上能把另外2种算法 仔细描述下么?谢谢

最基本的方法是枚举法,但时间复杂度较高,不过剪枝后还可以,不慢。
当然也可以用贪心法解决
=======回答楼下朋友的问题===========
本人是学PASCAL的,对C语言不太熟悉,能读懂,但写还有点困难。见谅!

#include<stdio.h>
void main()
{
int i,j,k,s,t;
for(i=1;i<=9;i++)
{
for(j=0;j<=9;j++)
{
for(k=0;k<=9;k++)
{
s=i*i*i+j*j*j+k*k*k;
t=100*i+10*j+k;
if(s==t) printf("%4d",t);
}
}
}
}
我自己想的!呵呵,这是本人做出来的第一个C语言程序