标题:最小乘法次数的问题
取消只看楼主
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
结帖率:95.37%
已结贴  问题点数:20 回复次数:4 
最小乘法次数的问题
给你一个非零整数,让你求这个数的n次方,每次相乘的结果可以在后面使用,求至少需要多少次乘。
如24:2*2=22(第一次乘),22*22=24(第二次乘),所以最少共2次。
211:2*2=22(第一次乘),22*22=24(第二次乘)24*24=28(第三次乘)28*22=210(第四次乘)210*21=211(第五次乘)所以最少共5次。
输入
第一行m表示有m(1<=m<=100)组测试数据;
每一组测试数据有一整数n(0<n<=10000);
输出
输出每组测试数据所需次数s;
样例输入
3
2
3
4
样例输出
1
2
2

该怎么写?
下面是从网上搜的答案。

#include <stdio.h>  
  
int main()  
{  
    int n,count,m;   
    scanf("%d",&m);  
    while(m--)  
    {  
        scanf("%d",&n);  
        count=0;  
        while(n!=1)  
        {  
            if(n&1)
                count++;  
            count++;  
            n>>=1;  
///这一块没看懂是怎么回事。
        }  
        printf("%d\n",count);  
    }  
    return 0;  
}
搜索更多相关主题的帖子: 最小 次数 测试 输出 count 
2017-12-02 22:12
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
得分:0 
回复 4楼 rjsp
你是怎样想到把N转换为二进制来算的呢?
            if(n&1)
                count++;  
            count++;  
            n>>=1;
还有一个问题:
我这一块代码是哪一行是计算最高位1转换的次数的?
2017-12-05 11:23
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
得分:0 
回复 3楼 liaohs
不是很理解。。
2017-12-05 11:23
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
得分:0 
回复 2楼 Alien_Lee
2017-12-05 11:24
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
得分:0 
回复 8楼 九转星河
恩好的、
2017-12-05 11:47



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-483046-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.336211 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved