C++递归算法题2的幂次方表示

2023-11-11

2:2的幂次方表示

总时间限制: 
1000ms
内存限制: 
65536kB
描述

任何一个正整数都可以用2的幂次方表示。例如:

    137=27+23+20

同时约定方次用括号来表示,即ab可表示为a(b)。由此可知,137可表示为:

    2(7)+2(3)+2(0)

进一步:7=22+2+20(21用2表示)

        3=2+20

所以最后137可表示为:

    2(2(2)+2+2(0))+2(2+2(0))+2(0)

又如:

    1315=210+28+25+2+1

所以1315最后可表示为:

    2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)

输入
一个正整数n(n≤20000)。
输出
一行,符合约定的n的0,2表示(在表示中不能有空格)。
样例输入
137
样例输出
2(2(2)+2+2(0))+2(2+2(0))+2(0)
来源
NOIP1998复赛 普及组 第一题

这一题明显需要使用位运算加递归来实现,加好意味着有循环,独立的位置进行递归
#include <iostream>
using namespace std;
int GetBit(int n, int i)
{
    return (n >> i) & 1;
}
void Exp(int n)
{
    bool flag = true;
    for(int i=15; i>=0; i--)
    {
    	//只输出二进制非0的位数 
        if(GetBit(n, i))
        {
            if( !flag)
                cout << "+";
            else
                flag = false;
            if(i==0)//递归的终止条件  第0位 
                cout << "2(0)";
            else if(i == 1)   // 第一位 
                cout << "2";      
            else
            {
                cout << "2(";   //第二位以上先输处"2(” 
                Exp(i);         //压栈 
                cout << ")";     
            }
        }
    }
}
int main()
{
    int n;
    cin >> n;
    Exp(n);
    return 0;
}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++递归算法题2的幂次方表示 的相关文章

随机推荐

  • ubuntu 18.04 搭建 fisco bcos 联盟链2.8版本(一)

    安装centos依赖 sudo apt install y openssl curl 创建操作目录 下载安装脚本 可将下载脚本和更改权限分开执行 创建操作目录 cd mkdir p fisco cd fisco 下载脚本 curl LO h
  • 玩转科技

    目录 前言 特性 编辑 为什么需要 ChatBox ChatGPT Plus 平替 下载 支持系统 功能图 使用教程 感受 展示 前言 今天小编又来了 推荐给大家一款开源的OpenAI API桌面客户端ChatBox 它支持 Windows
  • guava之Immutable(不可变)集合

    一 概述 guava是google的一个库 弥补了java语言的很多方面的不足 很多在java8中已有实现 暂时不展开 Collections是jdk提供的一个工具类 Guava中不可变对象和Collections工具类的unmodifia
  • ng+php架构下websocket监听实例

    系统架构 nginx服务器 应用服务器 数据库 通过websocket监听应用服务器的8090端口 前端js发送websocket请求到ng服务器 ng服务器转发请求到应用服务器的8090端口 1 php后端设置websocket监听 ip
  • Python基础集(3)条件语句&循环

    日更 的 Born 与c语言不同 Python中的包含关系有缩进决定 4个缩进为一个单位 一 条件语句 因为if条件语句的逻辑性与我们的思维相似 所以这里就不再赘述了 下面我们直接来看条件语句的代码格式 注意点 if 条件 elif 条件
  • CSS超链接样式,去除下划线等

    控制超链接样式 链接的四种状态 a link 普通的 未被访问的链接 a visited 用户已访问的链接 a hover 鼠标指针位于链接的上方 a active 链接被点击的时刻 去除CSS超链接下划线 a link text deco
  • Django: TypeError topic() got an unexpected keyword argument 'topics_id'

    urls py coding utf 8 定义learning logs的URL模式 from django conf urls import url from import views urlpatterns 主页 url r views
  • 在浏览器中输入一个地址,回车后发生了什么?

    步骤 1 输入地址 2 缓存解析 3 DNS域名解析 4 TCP链接 三次握手 5 服务器收到请求 处理后返回请求 6 浏览器渲染 7 断开TCP链接 四次挥手 一 输入网址 在浏览器中输入要访问的url地址 回车发起请求 二 缓存解析 浏
  • C语言-有一对兔子。从出生后第三个月起每个月都生一对兔子,小兔子长到三个月后又生一对小兔子,假如兔子都不死,问每个月的兔子总数为多少。

    int i n unsigned int month 1 2 出生第一个月的兔子数量 unsigned int month 2 0 出生第二个月的兔子数量 unsigned int month 3 0 可以生娃的兔子的数量 一个月后的兔子数
  • python中使用try exception时,打印完整出错代码追踪

    使用python程序时 不使用try exception时 虽然能打印完整的出错代码追踪 但是会发生异常崩溃导致程序卡死 启用try exception后 一般也只能打印异常类型和异常信息 无法直接获取到出错代码行和代码追踪信息 找到的解决
  • Vue组件的基本概念与使用

    在Vue中 组件是构建用户界面的基本单元之一 它允许开发者将界面拆分为独立 可重用的模块 使代码更加结构化 易于维护 本文将从简单到复杂 全面介绍Vue组件的各种用法 优点 缺点以及注意事项 公众号 Code程序人生 个人网站 https
  • C++读取txt文件里每行的数据

    include
  • 画PCB步骤

    画PCB步骤 1 导入原理图器件 2 画PCB边界 板子画圆弧 首先在机械层 mechanical 画一个边界 如矩形 然后在四个角画上圆弧 最后再复制到阻焊层 keep out Layer 复制到阻焊层方法 shift s单层显示 最后分
  • 【论文笔记】ResNet 精读笔记

    Deep Residual Learning for Image Recognition ResNet论文精读视频讲解 0 Tips 图像卷积中的维度是指通道数 过拟合问题 训练集误差低 但验证集误差高 退化问题 随着网络深度的增加 训练集
  • 长连接的watch机制实现

    前言 对于于HTTP协议来说 服务端给一次响应后整个请求就结束了 这是HTTP请求最大的特点 也是由于这个特点 HTTP请求无法做到的是服务端向客户端主动推送数据 但由于HTTP协议的广泛应用 很多时候确实又想使用HTTP协议去实现实时的数
  • Python3,66行代码,搞了个音乐下载器,从此听歌再也不需要花费银子了,真香!

    66行代码敲出音乐下载器 1 引言 2 代码实战 2 1 思路 2 2 安装 2 3 示例 3 总结 1 引言 小屌丝 鱼哥 最近比较流行的那首歌 咋又说费了 小鱼 那你就冲个VIP呗 小屌丝 开玩笑 我的钱又不是大风刮过来的 小鱼 那你咋
  • (七)理解angular中的module和injector,即依赖注入

    依赖注入 DI 的好处不再赘言 使用过spring框架的都知道 angularjs作为前台js框架 也提供了对DI的支持 这是javascript jquery不具备的特性 angularjs中与DI相关有angular module an
  • Java 使用正则验证Url地址是否以http:// 或 https:// 开头

    Java 使用正则验证Url地址是否以http 或 https 开头 正则表达式 String regUrl hH tT 2 pP hH tT 2 pP sS A Za z0 9 A Za z0 9 Pattern p Pattern co
  • C语言:使用可变参数,实现函数,求函数参数的最大值。

    此题的解决思路为 求若干个参数的最大值 我们假定第一个可变参数为最大值 定义为max 将之后的每一个可变参数和第一个可变参数相比较 始终在max里存放的是最大值 但是这里需要注意 每一次调用va arg 都会指向下一个可变参数 因此我们需要
  • C++递归算法题2的幂次方表示

    2 2的幂次方表示 查看 提交 统计 提问 总时间限制 1000ms 内存限制 65536kB 描述 任何一个正整数都可以用2的幂次方表示 例如 137 27 23 20 同时约定方次用括号来表示 即ab可表示为a b 由此可知 137可表