当前位置: 首页 > article >正文

【P1010 [NOIP1998 普及组] 幂次方】

[NOIP1998 普及组] 幂次方

问题描述

给定一个正整数 n n n,我们希望找到一种方式,将它表示为 2 2 2 的幂次方的和。例如,对于 137 137 137,可以表示为 2 7 + 2 3 + 2 0 2^7+2^3+2^0 27+23+20,或者按照约定的方式 2 ( 7 ) + 2 ( 3 ) + 2 ( 0 ) 2(7)+2(3)+2(0) 2(7)+2(3)+2(0)

用括号来表示幂次方,即 a b a^b ab 可以表示为 a ( b ) a(b) a(b)。例如, 7 7 7 可以表示为 2 2 + 2 + 2 0 2^2+2+2^0 22+2+20,其中 2 1 2^1 21 2 2 2 表示,这可以写成 2 ( 2 + 2 ( 0 ) ) + 2 2(2+2(0))+2 2(2+2(0))+2

解决方法

使用递归的方式来解决这个问题。首先找到最大的 2 k 2^k 2k,其中 k k k 是满足 2 k ≤ n 2^k \leq n 2kn 的最大整数。然后将 n n n 表示为 2 k 2^k 2k 和一个小于 2 k 2^k 2k 的余数的和。这个过程可以递归进行,直到余数为 0 0 0

#include<iostream>
using namespace std;

void search(int n) {
    if (n != 0) {
        int i = 1, q = 0;
        while (i <= n) {
            i *= 2;
            q++;
        }
        q--;
        i /= 2;
        if (q == 0 || q == 2)
            cout << "2(" << q << ")";
        else if (q == 1)
            cout << "2";
        else {
            cout << "2(";
            search(q);
            cout << ")";
        }
        n -= i;
        if (n != 0) {
            cout << "+";
            search(n);
        }
    }
}

int main() {
    int n;
    cin >> n;
    search(n);
    return 0;
}

输入与输出

输入是一个正整数 n n n,表示我们要表示的数。

输出是满足约定的 n n n 的表示,其中没有空格。

示例

输入示例

1315

输出示例

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

http://www.kler.cn/a/132629.html

相关文章:

  • vue3 路由写法及传参方式 !超详细
  • WPF的基础控件详解
  • python读写excel等数据文件方法汇总
  • Mac——基本操作使用整理
  • 学习日记_20241117_聚类方法(高斯混合模型)
  • MATLAB实现GARCH(广义自回归条件异方差)模型计算VaR(Value at Risk)
  • C#匿名方法介绍Action、Func、柯里化Currying
  • 1234234234
  • PostgreSQL按月计算每天值的累加
  • Java之线程的概念及方法的学习
  • JVM实战-JVM之类加载时机
  • C++构造函数 拷贝构造函数 括号法显示法隐式转换法实现类
  • openGauss学习笔记-126 openGauss 数据库管理-设置账本数据库-归档账本数据库
  • 鸿蒙LiteOs读源码教程+向LiteOS中添加一个系统调用
  • Unity - Cinemachine
  • SQL题
  • 深信服AC应用控制技术
  • 解决Kibana初始化失败报错: Unable to connect to Elasticsearch
  • dataspace
  • 16位 (MCU) R7F101G6G3CSP、R7F101G6E3CSP、R7F101G6G2DSP、R7F101G6E2DSP是新一代RL78通用微控制器
  • uniapp基础学习笔记01
  • 【网络安全】伪装IP网络攻击的识别方法
  • idea2023.2.3版本出现reading maven projects的进度条一直卡住的问题
  • 交换机堆叠 配置(H3C)堆叠中一台故障如何替换
  • 2311rust,到50版本更新
  • uniapp app tabbar 页面默认隐藏