首页 > 其他分享 >4.2的次幂表示

4.2的次幂表示

时间:2023-08-02 09:34:55浏览次数:18  
标签:表示 1315 递归 4.2 int 样例 137

【题目】

题目描述:
       任何一个正整数都可以用2进制表示,例如:137的2进制表示为10001001。
  将这种2进制表示写成2的次幂的和的形式,令次幂高的排在前面,可得到如下表达式:137=2^7+2^3+2^0
  现在约定幂次用括号来表示,即a^b表示为a(b)
  此时,137可表示为:2(7)+2(3)+2(0)
  进一步:7=2^2+2+2^0 (2^1用2表示)
  3=2+2^0
  所以最后137可表示为:2(2(2)+2+2(0))+2(2+2(0))+2(0)
  又如:1315=2^10+2^8+2^5+2+1
  所以1315最后可表示为:
  2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)
输入格式
  正整数(1<=n<=20000)
输出格式
  符合约定的n的0,2表示(在表示中不能有空格)
样例输入
     137
样例输出
    2(2(2)+2+2(0))+2(2+2(0))+2(0)
样例输入
   1315
样例输出
   2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)

【思想】

递归,每次递归传入的值是2的次幂,用一个总值保存当前的结果,当总和小于的时候,递归当前2的次幂,递归边界条件是三个直接表示,即2的0次幂=1,2的1次幂=2,2的2次幂=4

当总和等于目标值,结束递归。

【代码】

import java.util.*;

public class Main{
    private static String coupons(int n){
        int sum=0;
        String res="";
        for(int i=15;i>=0;i--){
            int temp=(int)Math.pow(2,i);
            if(sum+temp<n){
                sum+=temp;
                String str="";
                if (i == 0) {
                    str = "2(0)";
                } else if (i == 1) {
                    str = "2";
                } else if (i == 2) {
                    str = "2(2)";
                }else{
                    str = "2("+coupons(i)+")";
                }
                result+=(str+"+");
            }else if(sum+temp==n){
                sum+=temp;
                String str="";
                if (i == 0) {
                    str = "2(0)";
                } else if (i == 1) {
                    str = "2";
                } else if (i == 2) {
                    str = "2(2)";
                }else{
                    str = "2("+coupons(i)+")";
                }
                res+=str;
                break;
            }
        }
        return res;
    }
    public static void main(String[] args){
        Scanner reader = new Scanner(System.in);
        int n = reader.nextInt();
        System.out.println(coupons(n));    
    }      
}

 

标签:表示,1315,递归,4.2,int,样例,137
From: https://www.cnblogs.com/End1ess/p/17599694.html

相关文章

  • 题解 P9489【ZHY 的表示法】
    容易想到将所求差分,变为\([1,r]\)的答案减去\([1,l-1]\)的答案。直觉告诉我们所谓的“实数\(y\)”就是没事闲的,其实只需要整数就可以。然后这种酷似整除分块的结构提示我们很多\(y\)的取值都是多余的,只需要保留所有是\(x_i\)的倍数的取值就做到了不重不漏。要求\([1,k......
  • 拓展:三角形四心的向量表示
    一.“四心”的定义(1)重心:三边中线的交点,重心将中线长度分成2:1;(2)垂心:三条高线的交点,高线与对应边垂直;(3)内心:三条角平分线的交点(内切圆的圆心),角平分线上的任意点到角两边的距离相等;(4)外心:三条中垂线的交点(外接圆的圆心),外心到三角形各顶点的距离相等。二.“四心”的重要......
  • UVM:3.4.2 重载打印信息的严重性
    1.所有warning替换成error:2.只对某个特定id起作用:3.重载严重性是没有递归函数的。4.可以在命令行中实现:<simcommand>+uvm_set_severity=<comp>,<id>,<currentseverity>,<new_severity><simcommand>+uvm_set_severity="uvm_test_top.env.i_agt.drv,my_driver,......
  • 《VTK学习笔记》-01 VS2017+QT5.14.2+VTK9.2.6 环境搭建
    参考win10下在Qt中使用VTK(安装VS2017+安装QT5.9.9+编译配置VTK8.2.0)_如何在qt中使用vtk_HBybhy的博客-CSDN博客其他问题就不说了,主要是VS打开cmaker编译后的代码,先生成,等待半个小时完成后,选择右击INSTALL-->仅用于项目-->仅生成INSTALL,等进度条走完vtk_res文件夹里出现了一些文件......
  • 洛谷 P9489 ZHY 的表示法 题解
    Description给定\(\{x_n\}\),\(y\)为任意实数,求出在\([l,r]\)内\(\displaystyle\sum_{i=1}^{n}\lfloor\dfrac{y}{x_i}\rfloor\)有多少种取值。link:https://www.luogu.com.cn/problem/P9489Solution可以表示出的取值一定能被为某个\(x_i\)的倍数的\(y\)表示出。根据......
  • 理解了 HSL 颜色表示法,就能实现 ColorPicker 组件
    HSL颜色表示法是一种常用的颜色表示方法,它由色相(H)、饱和度(S)和亮度(L)三个参数组成。色相表示颜色的种类,饱和度表示颜色的纯度,亮度表示颜色的明暗程度。HSL颜色表示法相对于其他颜色表示法来说,更符合人类对颜色的感知和理解,因此被广泛应用于图形界面设计和网页开发等领域。实现一个Col......
  • audition 2021 for Mac(au2021) v14.2直装版
    Audition2021Mac是一款专业数字音频编辑软件,提供先进的音频混音、编辑和效果处理功能,专为音频和视频专业人员设计。无论是要录制音乐、无线电广播,还是为录像配音,Audition都能帮到您。它可提供先进的音频混合、编辑、控制和效果处理功能。最多混合128个声道,可编辑单个音频文件,使......
  • 【go语言】2.4.2 自定义包的创建和使用
    在Go中,任何一个目录都可以被视为一个包。创建自定义包的基本步骤是:新建一个目录,用于存放包的源文件。在新建的目录中编写Go代码,代码的第一行应该是 package包名。使用 import 语句在其他地方导入和使用这个包。接下来,我们详细看一下如何创建和使用自定义包。创建自......
  • Ubuntu22.04.2安装Nginx详细步骤!!
    安装更新软件包列表aptupdate安装nginx:sudoaptinstallnginx-y查看nginx服务是否启动sudosystemctlstatusnginx基础命令查看版本nginx-vnginxversion:nginx/1.18.0(Ubuntu)检查配置文件sudonginx-t正确返回结果:nginx:theconfigurationfile/etc/nginx/nginx.co......
  • Django-4.2博客开发教程:维护后台数据admin模块(六)
    在每个app目录下有个admin.py,使用这个文件可以对其app进行控制。步骤如下:1)先在settings里对其进行注册这里在myblog\myblog\settings.py  > INSTALLED_APPS里把APP名添加进去INSTALLED_APPS=[#'blog.apps.BlogConfig',#注册APP应用'blog','django.co......