这是来自的问题
以x开头并反复乘以x
,我们可以计算出三十个乘法的x^31
:
x^2 = x * x, x^3 = x^2 * x, x^6 = x^3 * x^3, x^7 = x^6 *x, x^14 = x^7 * x^7 ,
x^15 = x^14 * x, x^30 = x^15 * x^15 , x^31 = x^30 * x
编写程序以查找最少数量的操作来计算
x^n
以给定正整数x
和n
的n<=200
开头的乘法和除法对于n = 31,最少的#operation是6
对于n = 50,最少的#operation是7
任何想法都欢迎。
最佳答案
看到这个:http://en.wikipedia.org/wiki/Addition-chain_exponentiation
没有有效的算法可以使您获得最少的步骤,并且动态编程不起作用。
我猜测n
足够小,可以允许蛮力解决方案通过,尽管可能需要对其进行优化。你知道怎么蛮力吗?