r = 2^p*3^q
找到
p
和q
的所有可能组合,使r
的小数位数为给定的数字N
。p
和q
是正整数。
我想到的解决方案是蛮力:P
对于某些x,[2 ^ p * 3 ^ q = 10 ^ x
10 ^(log10(2)* p)* 10 ^(log10(3)* q)= 10 ^ x
所以
x = log10(2)* p + log10(3)* q
并且您知道x必须在N-1(包括)和N(不包括)之间
因此,您必须找到所有的p,q:
N-1 <= log10(2)* p + log10(3)* q 然后,您需要找到p和q的可能的最小值和最大值,并且如果您分析和过滤不适当的值,则可以使用循环遍历所有p,q或更贪婪的解决方案来进行BF。>
[这个问题自然地概括为找到所有p, q
使得2^p * 2^q
在min
和max
之间的问题。其中min = 10^N
和max = 10^(N+1) - 1
。
log(N)/ log(3)算法是否足够?