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

    最少乘法次数

    时间限制: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
     1 /*
     2     Name: NYOJ--46--最少乘法次数
     3     Copyright: ©2017 日天大帝
     4     Author: 日天大帝
     5     Date: 21/04/17 20:49
     6     Description: 这道题说的都是以2为底的n次方;求至少需要多少次乘。
     7                 如果n为偶数,可由两部分相同的如2的4次方为2的平方相乘
     8                 如果n为奇数,则需要两部合成,第一步两部分形成偶数在乘以2得到偶数
     9                 这道题可以用递归的方法,反向递归,从n到1
    10                 或者直接循环 
    11 */
    12 #include<iostream>
    13 using namespace std;
    14 int main(){
    15     int t;cin>>t;
    16     while(t--){
    17         int ct = 0,n;cin>>n;
    18         while(n != 1){
    19             if(n & 1)ct += 2;
    20             else ct++;
    21             n /= 2;
    22         }
    23         cout<<ct<<endl; 
    24     }
    25     return 0;
    26 }
     1 //递归代码 
     2 #include<iostream>
     3 using namespace std;
     4 int n,ct;
     5 void dfs(int num){
     6     if(num == 1)return ;
     7     ct++;
     8     if(num & 1)dfs(num-1);
     9     else dfs(num/2);
    10 }
    11 int main(){
    12 
    13     ios::sync_with_stdio(false);
    14     
    15     int t;cin>>t;
    16     while(t--) {
    17         cin>>n;
    18         ct = 0;
    19         dfs(n);
    20         cout<<ct<<endl;
    21     }
    22     return 0;
    23 }
  • 相关阅读:
    Excel组件使用配置文档下载
    mysql 的书籍推荐~
    基于HTTP 协议认证介绍与实现
    DebianKvm快速安装上手教程
    spring事务,TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
    项目中用到的设计模式(持续更新)
    项目中用到的架构模式(持续更新)
    添加验证
    ASP.NET Core中使用appsettings.json
    使用 ASP.NET Core 和 MongoDB 创建 Web API
  • 原文地址:https://www.cnblogs.com/langyao/p/6746137.html
Copyright © 2011-2022 走看看