#Z0708104. 最少乘法次数

最少乘法次数

题目描述:

给你一数2,让你求这个数的n次方,每次相乘的结果可以在后面使用,求至少需要多少次乘。如2​^4^​:2*2=2​^2^​(第一次乘),2​^2^​*2​^2^​=2​^4^​(第二次乘),所以最少共2次;

输入格式:

第一行m表示有m(1<=m<=100)组测试数据; 每一组测试数据有一整数n(0<n<=10000);

输出格式:

输出每组测试数据所需次数s;

样例输入:

4
2
3
4
1000

样例输出:

1
2
2
14

提示:

2^7=(2^3)*(2^3)*2,需要两次乘法,然后2^3可以通过类似方法计算。

2^1000=(2^500)*(2^500),需要一次乘法,然后2^500可以通过类似方法计算。

这是一种快速乘方算法的思想,由此可以看出,原始乘方算法可以被极大的优化。