24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1360  |  回复: 9
本帖产生 1 个 程序强帖 ,点击这里进行查看

holmescn

金虫 (正式写手)

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

用192分别去乘1,2,3,可得
192 * 1 = 192
192 * 2 = 384
192 * 3 = 576

把最后的积连成一个数,是192384576。这个九位数包含1到9,每个数一仅一次。我们把这个算法定义为“连接积“
写为192(1,2,3), 而192384576这个数被称为pandigital(数独数....)

如果我们计算9(1,2,3,4,5), 可以得到918273645,这也是一个pandigital。

那么用"连接积"能得到的最大的pandigital是多少?

注意K(1,2,3,..,n)里,n > 1
回复此楼

» 猜你喜欢

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

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

libralibra

至尊木虫 (著名写手)

骠骑将军

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
xzhdty(金币+2): 欢迎常来程序语言参与讨论 2011-07-09 19:40:53
余泽成(程序强帖+1): 鼓励交流! 2011-07-11 20:46:21
欧拉好喜欢数独数啊
这题有9(1,2,3,4,5)做提示,结果肯定是9###(1,2)的形式
乘以1和2分别得到9###和9###*2=#####(5位),
否则9(1,2,3,4,5)就是答案,因为其他数*1首位数字小于9.
所以从9876循环到9213(前4位大于9182),找到满足数独数的即可
CODE:
#! usr/bin/env python

# 932718654
# Elapsed time: 0.00325935 seconds

from mytictoc import tic, toc

def euler38():
    tic()
    for i in xrange(9876,9213,-1):
        if set(str(i)+str(2*i))==set('123456789'):
                print str(i)+str(2*i)
                break
    toc()

if __name__=='__main__':
    euler38()

[ Last edited by libralibra on 2011-7-9 at 16:01 ]
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
2楼2011-07-09 16:00:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tieer

木虫 (正式写手)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
xzhdty(金币+2): 欢迎参与讨论 2011-07-09 19:41:15
引用回帖:
Originally posted by libralibra at 2011-07-09 16:00:10:
欧拉好喜欢数独数啊
这题有9(1,2,3,4,5)做提示,结果肯定是9###(1,2)的形式
乘以1和2分别得到9###和9###*2=#####(5位),
否则9(1,2,3,4,5)就是答案,因为其他数*1首位数字小于9.
所以从9876循环到9213(前4位大于 ...

延续楼上的想法,其实上限可以更小的,由于有了9***18***的模型(后面必须是18,不然就是19重复9了。),则第二位数字不可能为4及其以上的数字,即第二位只会是2或者3,简单想想就知道。
首先第二位不可能是5,6,7,中的,因为进位后就成了9***19***,如果第二位是4,而第三位不进位,则会是94**188**,8重复,同理如果第三位进位则为94**189**,9重复。延续此道理其实会发现,9***里面不能出现4.则上限可为9376.遍历一百多个数即可。

[ Last edited by tieer on 2011-7-9 at 16:40 ]
思考,让这个世界更有趣。
3楼2011-07-09 16:36:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
xzhdty(金币+1): 谢谢参与 2011-07-09 19:41:42
引用回帖:
Originally posted by tieer at 2011-07-09 16:36:32:
延续楼上的想法,其实上限可以更小的,由于有了9***18***的模型(后面必须是18,不然就是19重复9了。),则第二位数字不可能为4及其以上的数字,即第二位只会是2或者3,简单想想就知道。
首先第二位不可能 ...

很给力的分析,9376这个上限很好,因为最后结果来看是9327,不到50个数,原来将近350个数

Elapsed time: 0.00058611 seconds
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
4楼2011-07-09 17:14:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tieer

木虫 (正式写手)


小木虫(金币+0.5):给个红包,谢谢回帖
引用回帖:
Originally posted by libralibra at 2011-07-09 17:14:38:
很给力的分析,9376这个上限很好,因为最后结果来看是9327,不到50个数,原来将近350个数

Elapsed time: 0.00058611 seconds

Python上怎么看程序的运行时间啊,正在学习Python,要是libralibra有Python的好的资料什么的,还望分享一下,多指点指点
思考,让这个世界更有趣。
5楼2011-07-10 00:00:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
xzhdty(金币+2): 谢谢参与讨论 2011-07-10 08:16:14
引用回帖:
Originally posted by tieer at 2011-07-10 00:00:54:
Python上怎么看程序的运行时间啊,正在学习Python,要是libralibra有Python的好的资料什么的,还望分享一下,多指点指点

timeit,另外,我也用vim,编译后有时间,f5就可以了
照着这里来
http://52xenos.blogspot.com/2011/05/pythonvim-ide.html
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
6楼2011-07-10 01:27:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

a.wang

木虫 (小有名气)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
xzhdty(金币+1): 谢谢参与 2011-07-11 09:05:25
余泽成(金币+1): 欢迎常来程序语言版! 2011-07-11 20:46:40
引用回帖:
Originally posted by tieer at 2011-07-09 16:36:32:
延续楼上的想法,其实上限可以更小的,由于有了9***18***的模型(后面必须是18,不然就是19重复9了。),则第二位数字不可能为4及其以上的数字,即第二位只会是2或者3,简单想想就知道。
首先第二位不可能 ...

延续你和楼上的想法,后面就不用编程了:
第二位可能是2或3,既然求最大,就从3开始继续分析。93**(1,2)=93**18n##. 其中n分6或7(第三位进一)两种可能。若n是7,则剩余数字为2456,需满足**x2=1##, 再由于末尾不能是4、数独数中无0,故只需试56,62两数即可知该情况不满足。若n是6,则第三位乘2不进位,则只能是2,剩余数字为2457,满足**x2=##, 很显然一种情况 27x2=54.  ----> 9327(1,2)
7楼2011-07-10 18:04:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tieer

木虫 (正式写手)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
xzhdty(金币+1): 谢谢参与 2011-07-11 09:05:53
引用回帖:
Originally posted by a.wang at 2011-07-10 18:04:07:
延续你和楼上的想法,后面就不用编程了:
第二位可能是2或3,既然求最大,就从3开始继续分析。93**(1,2)=93**18n##. 其中n分6或7(第三位进一)两种可能。若n是7,则剩余数字为2456,需满足**x2=1##, 再由于末 ...

呵呵,佩服,当时倒是想过再推下去,只是因为前面的那些步骤在大脑里分析起来很快,也就那么一想,后面的当时觉得挺麻烦就没再想了,可能比高手编程的时间还长。呵呵,还是佩服、
思考,让这个世界更有趣。
8楼2011-07-10 19:29:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

a.wang

木虫 (小有名气)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
jjdg(金币+1): 感谢参与 2011-07-12 14:52:12
引用回帖:
Originally posted by tieer at 2011-07-10 19:29:55:
呵呵,佩服,当时倒是想过再推下去,只是因为前面的那些步骤在大脑里分析起来很快,也就那么一想,后面的当时觉得挺麻烦就没再想了,可能比高手编程的时间还长。呵呵,还是佩服、

呵呵,不敢当,刚看时第一感觉是暗含限制条件越往后会越多,应该很快就能分析,于是就再老兄之基础上狗尾续貂了一把。  看得出老兄是个编程高手,因为我觉得在编程之前能仔细分析寻找优化方法和条件是很重要的。 希望能交个朋友...
9楼2011-07-11 08:43:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tieer

木虫 (正式写手)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
jjdg(金币+1): 感谢参与 2011-07-12 14:51:58
引用回帖:
Originally posted by a.wang at 2011-07-11 08:43:17:
呵呵,不敢当,刚看时第一感觉是暗含限制条件越往后会越多,应该很快就能分析,于是就再老兄之基础上狗尾续貂了一把。  看得出老兄是个编程高手,因为我觉得在编程之前能仔细分析寻找优化方法和条件是很重要的 ...

呵呵,这个绝对是谬奖了。我是学高分子的,只是比较喜欢玩数学题这些而已。以前学的C都忘了一半了,这才开始想学点儿Python。觉得欧拉工程这些题挺适合锻炼一下的,要说高手,我连菜鸟都不算,呵呵,
思考,让这个世界更有趣。
10楼2011-07-11 12:06:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 holmescn 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见