免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: DNFCF
打印 上一主题 下一主题

[算法] 变态的算法题 [复制链接]

论坛徽章:
0
61 [报告]
发表于 2011-05-16 09:05 |只看该作者
本帖最后由 KBTiller 于 2011-05-16 09:18 编辑
折腾啊我!!

cai@cai ~/workspace/n21cal $ time ./Debug/n21cal  
1732949 种组合
the number is 12 ...
蔡万钊 发表于 2011-05-14 06:02


我用类似你的想法做,组合数比你这个高一个量级 ,14139189

论坛徽章:
0
62 [报告]
发表于 2011-05-16 13:17 |只看该作者
确实变态

论坛徽章:
0
63 [报告]
发表于 2011-05-16 14:45 |只看该作者
我给个思路吧。

不用去算数。

char N[21]

用循环的方式。

先计算 21 一个 1 的结果,
然后是  ...
蔡万钊 发表于 2011-05-14 02:20



    按你的办法改进了一下,增加了从小到大输出的功能,不到40秒
    你的办法真不错


128468643043731391252
449177399146038697307
请按任意键继续. . .

论坛徽章:
0
64 [报告]
发表于 2011-05-16 14:48 |只看该作者
想请问你具体怎么做的?我想的是对21位数进行枚举,但是那样很崩溃,太慢了
oiacm 发表于 2011-05-13 13:10



    容我稍微整理一下,很快就会发出来

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:58:11数据库技术版块每日发帖之星
日期:2015-08-30 06:20:00
65 [报告]
发表于 2011-05-17 00:26 |只看该作者
回复 61# KBTiller

是。貌似有人说要至少 一个9 , 没9 是不行的 ~~~

就这样写了。

问题是怎么算都只有一个结果,而不是2个,一定是哪里漏了。

论坛徽章:
0
66 [报告]
发表于 2011-05-17 00:36 |只看该作者
回复 66# 蔡万钊

“至少 一个9 , 没9 是不行的”,这个不对

n9应该是 0~9 个,可以没有,最多9个

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:58:11数据库技术版块每日发帖之星
日期:2015-08-30 06:20:00
67 [报告]
发表于 2011-05-17 00:46 |只看该作者
回复 67# KBTiller


    好,我修改一下看看。

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:58:11数据库技术版块每日发帖之星
日期:2015-08-30 06:20:00
68 [报告]
发表于 2011-05-17 00:55 |只看该作者
回复 67# KBTiller


    不行啊! 还是只有一个结果。莫非是我的大数的计算错误了?

论坛徽章:
0
69 [报告]
发表于 2011-05-17 08:50 |只看该作者
回复  KBTiller


    不行啊! 还是只有一个结果。莫非是我的大数的计算错误了?
蔡万钊 发表于 2011-05-17 00:55


    用 n9 = 4,n8 = 1,n7 = 4
        n6 = 2,n5 = 0,n4 = 3
        n3 = 3,n2 = 0,n1 = 2
        n0 = 2。(449177399146038697307 )试一下,也许能发现bug

   你的机器sizeof(unsigned long)是多少?我的机器上试不起来

论坛徽章:
0
70 [报告]
发表于 2011-05-17 12:09 |只看该作者
献丑!请大家指正

0_问题.h

  1. /*
  2. 一个N位的十进制正整数,如果它的每个位上的数字的N次方的和等于这个数本身,
  3. 则称其为花朵数。
  4. 例如:
  5. 当N=3时,153就满足条件,因为 1^3 + 5^3 + 3^3 = 153,
  6. 这样的数字也被称为水仙花数(其中,“^”表示乘方,5^3表示5的3次方,也就是立方)。
  7. 当N=4时,1634满足条件,因为 1^4 + 6^4 + 3^4 + 4^4 = 1634。
  8. 当N=5时,92727满足条件。
  9. 实际上,对N的每个取值,可能有多个数字满足条件。
  10. 程序的任务是:求N=21时,所有满足条件的花朵数。注意:这个整数有21位,
  11. 它的各个位数字的21次方之和正好等于这个数本身。
  12. 如果满足条件的数字不只有一个,请从小到大输出所有符合条件的数字,
  13. 每个数字占一行。因为这个数字很大,
  14. 请注意解法时间上的可行性。要求程序在3分钟内运行完毕。
  15. */
  16. #ifndef WENTI_H
  17. #define WENTI_H
  18.     #define CESHI        //进行测试  
  19.     //#define QIUJIE     //求解21位问题                              
  20.    
  21.     #ifdef CESHI             //测试
  22.       #define JINZHI 10      //十进制
  23.       #define WEISHU 3       //3位花朵数   
  24.       #define N      WEISHU  //幂次==位数
  25.     #endif //CESHI_3
  26.    
  27.     #ifdef QIUJIE            //求解            
  28.       #define JINZHI 10      //十进制
  29.       #define WEISHU 21      //位数   
  30.       #define N      WEISHU  //幂次==位数
  31.     #endif //QIUJIE
  32.    
  33. #endif // WENTI_H
  34. /*
  35. 注:
  36. 通过修改符号常量的值,可以得到其他进制或其他位数花朵数问题的解
  37. */

复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP