NYoj46 最少乘法次数

来源:互联网 发布:天界法宝升阶数据 编辑:程序博客网 时间:2024/04/30 17: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;
样例输入
3
2
3
4
样例输出
1
2
2

解题思路:n/2累加一次,并且n%2==1再累加一次,然后n=n/2,直到n为1时,即为累加的次数

#include <iostream>using namespace std;int main(){    int m,n,count;    cin >> m;    while(m--)    {        count = 0;        cin >> n;        while(n/2)        {            if(n%2 > 0)             count++;            n /= 2;            count++;        }        cout <<count<< endl;    }    return 0;}


0 0
原创粉丝点击