这是来自的问题



以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以给定正整数xnn<=200开头的乘法和除法

对于n = 31,最少的#operation是6
对于n = 50,最少的#operation是7

任何想法都欢迎。

最佳答案

看到这个:http://en.wikipedia.org/wiki/Addition-chain_exponentiation

没有有效的算法可以使您获得最少的步骤,并且动态编程不起作用。

我猜测n足够小,可以允许蛮力解决方案通过,尽管可能需要对其进行优化。你知道怎么蛮力吗?

10-06 03:04