如何获得重复小数的长度?

时间:2017-09-24 08:02:48

标签: python algorithm

我接受了采访,问题是如何获得重复小数的长度?

例如

sara (3 keys)
jhon (1 key)

我试图编写代码

1/3=0.3333..., it returns 1,
5/7=0.7142857142857143, it returns 6, since 714285 is the repeating decimal.
1/15=0.066666666666666, it returns 1.
17/150=0.11333333333333333, it returns 1. since 3 is the repeating decimal.

但是,我的代码无法通过所有测试。而且它的时间复杂度是O(n * logn)。如何改进并使其时间复杂度为O(n)?

1 个答案:

答案 0 :(得分:2)

可能正确的方法是遵循@Henry建议的数学堆栈交换链接。但是关于你的代码,这里是我的优化版本。这里的关键点是使用字典而不是数组 - 在这种情况下Attempt 0=Shoes1 Attempt 1=Shoes1 Attempt 2=Shoes1 Attempt 3=Shoes3 Attempt 4=Shoes3 Attempt 5=Shoes3 Attempt 6=Shoes5 Attempt 7=Shoes5 Attempt 8=Shoes5 Attempt 9=Shoes7 操作要快得多。

in

在29/39916801的计算机上,此代码在几秒钟内完成计算。