博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

fush76

BLOG
  fush76.cublog.cn

关于作者
姓名:fush76
职业:金融行业,运行维护支持岗
年龄:30
位置:
个性介绍:茶亦醉人,勿需酒,书能香我,何需花.
|| << >> ||
我的分类


水仙花数的问题
1.题目
 水仙花数是一个三位数,其各位上数的立方和等于这个数,例如153,13+53+33=153。请找出它们来,OK,下面我们就来找一下这种美妙的数。
 2.编程简析
 水仙花数既然是一个三位数,那么它的范围也就再清楚不过了,100~999,所以总计有900种可能的情况。怎样判断这个数是不是水仙花数呢?因为条件是各位上数的立方和等于这个数,那么如果假设这个数是n,并且各数位从高到低分别是abc,那么abc和n之间有种一一对应关系。其实我们这里的问题也就成了知道某个数来拆分其数位了。三个数位拆分如下:
a=Intn/100
b=Intn-100a/10
c=n-100a-b10
 条件也就是aaa+bbb+ccc=n。另外,程序的整体结构是循环内套分支。
3.编程实现
 
3.1  方案一:
#include "stdio.h"

main()
{
 int i,j,k,n;
 printf("'water flower'number is:");
 for(n=100;n<1000;n++)
 {
 i=n/100;/*分解出百位*/
 j=n/10%10;/*分解出十位*/
 k=n%10;/*分解出个位*/
 if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
 printf("%-5d",n);
 }
 getch();
3.2 方案二:
 
main(){
int a,b,c,num;
for(a=1;a<10;a++){
for(b=0;b<10;b++){
for(c=0;c<10;c++){
if(a*100+b*10+c==(num=a*a*a+b*b*b+c*c*c))
printf("%d",num);
}
}
}
}
 
 
 

发表于: 2007-03-31,修改于: 2007-03-31 18:34,已浏览377次,有评论2条 推荐 投诉


网友评论
网友: 两秒幻觉 时间:2007-05-06 15:15:49 IP地址:121.230.3.★
你怎么这么多资料啊,好丰富 啊.太棒了

网友: 本站网友 时间:2007-08-10 16:39:23 IP地址:222.133.182.★
什么啊,你做的对吗?

 发表评论