46 最少乘法次数

来源:互联网 发布:淘宝招牌免费模板 编辑:程序博客网 时间:2024/05/16 10:11


最少乘法次数

时间限制:1000 ms  |  内存限制:65535 KB
难度:3
描述

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

               

输入
第一行m表示有m(1<=m<=100)组测试数据;
每一组测试数据有一整数n(0<n<=10000);
输出
输出每组测试数据所需次数s;
样例输入
3234
样例输出
122

#include<iostream>#include<cmath>using namespace std;int ttt(int n,int a[]){    int i=0;    while(n!=0)    {        a[i]=n%2;        n/=2;        i++;    }    return i;}int main(){    int n,m,i,num;    cin>>n;    while(n--)    {        int a[15]={0};        cin>>m;        i=ttt(m,a);        num=--i;        for(i--;i>=0;i--)            if(a[i]==1) num++;        cout<<num<<endl;    }}


0 0
原创粉丝点击