最少乘法次数
提交数: 187, 通过率: 75.94%, 平均分: 75.94
题目描述:
给你一数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