24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1545  |  回复: 12
本帖产生 3 个 程序强帖 ,点击这里进行查看
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

holmescn

金虫 (正式写手)

[交流] Euler 工程 第三十题已有5人参与

又是一个指数的题啦!

说有3个数可以写成各位数字的4次方的和:

1634 = 1^4 + 6^4 + 3^4 + 4^4
8208 = 8^4 + 2^4 + 0^4 + 8^4
9474 = 9^4 + 4^4 + 7^4 + 4^4

虽然 1 = 1^4, 但这不是一个求和, 所以这个不算.

这三个数的和为: 1634 + 8208 + 9474 = 19316

那么那些数可以写成各位数字的5次方的和呢? 这些数的和又是多少?
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
xzhdty(金币+2): 鼓励交流! 2011-06-18 22:06:27
我也是py
CODE:
from mytictoc import tic,toc

tic()

# find upper bound
n = 1
while n*(9**5)>10**(n+1)-1:
    n += 1

# compute
print reduce(lambda x,y:x+y,[n for n in xrange(2,n*(9**5)) if n==reduce(lambda x,y:x+y,[int(c)**5 for c in str(n)])])

toc()

效率低下
CODE:
443839
Elapsed time: 5.64833575 seconds

matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
4楼2011-06-18 16:31:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
dubo(金币+1): 欢迎常来程序语言版讨论 2011-06-19 15:30:34
微尘、梦想(程序强帖+1): 2011-06-19 17:23:58
引用回帖:
Originally posted by holmescn at 2011-06-18 18:00:12:
libralibra兄, reduce 比sum 要快吗?

不会吧,我觉得sum应该快吧.我检测结果也是,还只测试了10^3-10^7的数,要是规模大,估计lambda表达式更慢.
感觉reduce,map,zip,lambda..就是为了写出来好看,少写几行代码的.

另,matlab我也发现这个问题,第28题螺旋矩阵四角求和那个,后面六十几还是八十几有个类似的,找到4个数等差数列的通项,用sum(start:step:end),并没有这样快: start+(start+step)+(start+2*step)+(start+3*step)
CODE:
================================
REDUCE+LAMBDA: 1000
499500
Elapsed time: 0.00649915 seconds

SUM: 1000
499500
Elapsed time: 0.00453717 seconds

================================
REDUCE+LAMBDA: 10000
49995000
Elapsed time: 0.00579124 seconds

SUM: 10000
49995000
Elapsed time: 0.00484922 seconds

================================
REDUCE+LAMBDA: 100000
4999950000
Elapsed time: 0.03130733 seconds

SUM: 100000
4999950000
Elapsed time: 0.00988506 seconds

================================
REDUCE+LAMBDA: 1000000
499999500000
Elapsed time: 0.34010105 seconds

SUM: 1000000
499999500000
Elapsed time: 0.13641119 seconds

================================
REDUCE+LAMBDA: 10000000
49999995000000
Elapsed time: 3.26226713 seconds

SUM: 10000000
49999995000000
Elapsed time: 1.39761869 seconds

代码
CODE:
from mytictoc import tic,toc


for i in xrange(3,8):
    print '================================'
    print 'REDUCE+LAMBDA: %d' % (10**i)
    tic()
    print reduce(lambda x,y:x+y,xrange(10**i))
    toc()

    print 'SUM: %d' % (10**i)
    tic()
    print sum(xrange(10**i))
    toc()

[ Last edited by libralibra on 2011-6-18 at 22:00 ]
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
6楼2011-06-18 21:55:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 holmescn 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见