| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1542 人关注过本帖, 1 人收藏
标题:"水仙花数"的问题
只看楼主 加入收藏
zhanghuangkun
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-9-19
收藏
得分:0 
LZ 你为什么输入三个数还要分解百位,十位和个位呢??
应该是输入一个数,将它分解成百位,十位和个位,然后才用条件句求这个数是不是水仙花数吧~~!
2008-09-19 20:51
zhanghuangkun
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-9-19
收藏
得分:0 
三个数的应该是这样求吧~~!
#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;
  }
2008-09-19 20:55
lvsong1988
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-9-18
收藏
得分:0 
同二楼
2008-09-19 20:55
shade1220
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2008-8-5
收藏
得分:0 
[bo][un]zhanghuangkun[/un] 在 2008-9-19 20:55 的发言:[/bo]

三个数的应该是这样求吧~~!
#include
  int main(void)
  {
  int a,b,c;
  for(a=1;a



貌似你的算法和我是个逆序.
大同小异

踏踏实实学习,认认真真编程
2008-09-19 21:38
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
/
程序代码:
/*******************************************************************************

        题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个n位数,
    其各位数字n次方的和等于该数本身。
    例如:153是一个“水仙花数”,因为153=1^3+5^3+3^3
    534494836也是,因为534494836 = 5^9+3^9+4^9+4^9+9^9+4^9+8^9+3^9+6^9

    输入一个n,找出相应的全部解.

###############################################################################

        作了一个程序,由于long取值范围的问题,理论上可以算到19位数(实际上我在算
    9位数的值的时候,就已经由于时间太长而取消运算了,也许我的算法有问题,期待高人
    指教,谢谢)。

        我想,用数组来运算应该能解决这个问题,无奈才疏学浅,还望高手解决。

*******************************************************************************/
#include<stdio.h>
#define N 19
int dg(long *p,long n,int j)
{
    if(!n)    return j;
    else
    {
        p[j]=n%10;
        j++;
        dg(p,n/10,j);
    }
}
long cubic(long  c,int n)
{
    long i;
    long d;
    d=1;
    for(i=0;i<n;i++)
        d*=c;
    return d;
}
int main(void)
{
    long n,m;
    long p[N];
    long c[N];
    long k=153;
    int i,j;
    printf("input n:\n");
    scanf("%ld",&n);
    while(k<=n)
    {
        j=0,m=0;
        j=dg(p,k,j);
        for(i=0;i<j;i++)
        {
            c[i]=cubic(p[i],j);
            m+=c[i];
        }
        if(m==k)
            printf("%ld\n",k);
        k++;
    }
    getch();
}



2008-09-19 23:50
qGemini
Rank: 1
等 级:禁止访问
帖 子:100
专家分:0
注 册:2008-6-28
收藏
得分:0 
9次的时候有4个解,你看看什么时候能算出来就行了

11次的时候:
32164049650
32164049651
40028394225
42678290603
44708635679
49388550606
82693916578
94204591914
共8个解

19次的时候:
1517841543307505039
3289582984443187032
4498128791164624869
4929273885928088826
共4个解

35次的时候:
12639369517103790328947807201478392
12679937780272278566303885594196922
共2个解

PS.35次方的话其实还有这两解:
5250083909873201044638631458484846
7673249664848285722449710136138169
属于广义水仙花数

偶的程序比较慢,算35位的算了三分多钟才计算完毕。
要是20位以内还好,瞬间就出解了

Gemini  C/C++群57751397
本人不对自己的言论负责

http://
2008-09-20 01:25
随心
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:12
帖 子:2577
专家分:250
注 册:2007-8-12
收藏
得分:0 
fy?fm?

天之道,利而不害。圣人之道,为而不争。信言不美,美言不信。善者不辩,辩者不善。知者不博,博者不知。
2008-09-20 01:52
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
我也这么怀疑……这题目在群里讨论的时候好像就飞燕在场……

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-09-20 07:51
快速回复:"水仙花数"的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024450 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved