最少乘法次数

提交数: 186, 通过率: 75.81%, 平均分: 75.81

题目描述:

给你一数2,让你求这个数的n次方,每次相乘的结果可以在后面使用,求至少需要多少次乘。如24:2*2=22(第一次乘),22*22=24(第二次乘),所以最少共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可以通过类似方法计算。

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

时间限制: 3000ms
空间限制: 128MB