zoukankan      html  css  js  c++  java
  • nyoj 46 最少乘法次数

    View Code
     1  
     2 #include <iostream>
     3 #include <cstdio>
     4 using namespace std;
     5 
     6 int main()
     7 {
     8      int T;
     9      scanf("%d",&T);
    10      while(T--)
    11      {
    12          int n;
    13          scanf("%d",&n);
    14          int t=n,sum=-1,k=0;
    15          while(t)
    16          {
    17              sum++;
    18              if(t%2) k++;
    19              t=t>>1;
    20          }
    21          cout<<sum+k-1<<endl;
    22      }
    23     return 0;
    24 }
    25         

     

    最少乘法次数

    时间限制: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
    上传者
    李剑锋
    这个题目讲究技巧 log2(n)+n的二进制中出现1的个数减1
    技巧需要自己理解和领悟
     
  • 相关阅读:
    模型评估方法
    欠拟合、过拟合、偏差、方差
    机器学习基本概念
    Hive 的基本概念
    Flume的Channel
    Flume的Sink
    Flume的Source
    Flume 安装和配置
    Flume的基本概念
    BIO & NIO & NIO常见框架
  • 原文地址:https://www.cnblogs.com/wujianwei/p/2636975.html
Copyright © 2011-2022 走看看