【求助】求解释原理
projecteuler吧
全部回复
仅看楼主
level 7
酒尽望天 楼主
问题:求1/d 产生的循环小数中循环位数最多时,d的值,其中d=1,2,3...1000
答案:
求第11行的原理。
2012年08月24日 01点08分 1
level 7
酒尽望天 楼主
2012年08月24日 01点08分 2
level 10
这你从哪儿看的。。。。
2012年08月24日 01点08分 3
百度淘的,结果好像是对的。。。
2012年08月24日 01点08分
level 10
这个方法diao爆了。。。
1/9 = 0.111111...
1/99 = 0.0101010101...
1/999 = 0.001001001...
1/9999 = 0.000100010001...
明白了吗???
2012年08月24日 01点08分 4
还是不明白,这跟“循环数的位数等于该数能被几个9整除”有什么逻辑关系?
2012年08月24日 01点08分
level 10
方法虽然很巧妙,但是并没有我的算法快。。。[抛媚眼][抛媚眼]
2012年08月24日 01点08分 5
。。。
2012年08月24日 01点08分
回复 酒尽望天 :你是算法是不是直接append?然后,if in:break?
2012年08月24日 01点08分
回复 酒尽望天 : 不知道你说的是什么[囧][囧]我的算法是把每个数得循环节按照竖式除法算出来。。。。这是个确定性算法,中间木有试除循环得过程,所以略快一些。。。
2012年08月24日 01点08分
回复 xw_y_am :竖式除法是什么?
2012年08月24日 02点08分
level 10
@酒尽望天明白了吗??
2012年08月24日 01点08分 6
明白了,不过建议前面加上: 求任意1/a=0.abc...def...(其中abc...表示非循环部分假设有m位,def表示循环部分)的循环数都等同于求10^m*(1/a),再等同于求10^m*(1/a)-abc...的循环数。
2012年08月24日 02点08分
回复 酒尽望天 :即等同于求0.def...的循环数
2012年08月24日 02点08分
回复 酒尽望天 : 额。。。这个仅仅是预处理而已,不是主要部分。。。
2012年08月24日 04点08分
[喷][喷][喷][喷][喷]
2012年08月24日 15点08分
level 10
这是计算 1 - 2000 时得结果
上边是我的算法的运行时间
下边是他的算法的运行时间
[鼓掌][鼓掌]

2012年08月24日 01点08分 7
我的是1979 20.5s 1979 4.89100003242s 看来这个算法虽然妙,但确实慢,
2012年08月24日 02点08分
level 6
╮(╯▽╰)╭你们啊,竟然趁我工作时就把问题给解决了,真不给面子啊[鬼脸]
2012年08月24日 02点08分 8
谁让你不抓紧。。。
2012年08月24日 02点08分
level 12
我是打酱油的。。。
2012年08月24日 02点08分 9
level 6
我也是来打酱油的,不知道你们在说哪题的飘过
2012年08月24日 02点08分 10
26
2012年08月24日 04点08分
level 6
0.12秒飘过~
2012年08月24日 04点08分 11
how can??难不成你是用的分数做的???
2012年08月24日 05点08分
回复 xw_y_am :我发现看不懂自己的代码了T_T
2012年08月24日 06点08分
回复 xw_y_am :奇怪,我也是用小学的那种方法啊,为什么我们的代码会有那么大的差别的?PS:我用CL写的,然后是直接在SLIME中运行的,所以没有启动程序的时间,并且是编译过的。你是用Python写的吗?
2012年08月24日 07点08分
回复 Liutos : 必然是啊。。。为啥python如此之慢呢。。。
2012年08月24日 10点08分
1