1010 幂次方

news/2024/7/20 20:12:31 标签: 深度优先, 算法

1010 幂次方

其实这一步代码感觉并不难实现,就是不好想
我们一看就明白,这一定需要递归
首先我们得明白,一个数先进行用2的次幂表示,如何表示,只需要使用O(logn)的一个循环,然后我们就能求出指数和幂了
这里注意,幂与指数都会多算一次,所以需要减去
求出指数后,分两种情况 ,一个数0或2的情况,说明不需要进行递归了,直接将指数进行输出;否则,我们还得把指数进行递归,用2次幂接着表示
指数表示完了,就要将剩下的数再次递归,剩下的数,用总数x减去我们表示的幂,剩下的重复,就是递归了
记住,循环表示会多求一次,一定要注意,一定要注意,一定得把多的一个减去

---------重新---------
我记得这个题我之前在2020考场上顿时爱上了这个题
这个题真的和那个题太像了
太难了
2020那个考试,真的太遗憾了,我完全可以拿300分,或者轻轻松松拿省1,唉,错过了就是错过了
这个题有两个步骤,一个是求和,一个将2幂指数进行分解
偶数用幂,奇数也就是搞不下去了才用加来,这是一个数学规律
这个题非常明显就是用递归
类似于这样的循环输出也就是格式化输出
那么,一般只有一个需要特殊弄,然后就按照格式化

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n;
void dfs(int x)
{
    if(x)//最后会被搞成1 1再接着往下搞就是0所以用了这个条件 
    {
        int a=1,q=0;//底数,指数
        cout<<2;//这个是第一个的格式 
        while(x>=a)//循环计算底数和指数 
        {
            ++q;
            a*=2;
            //将x用2进制表示
        }
        --q;//循环,会多算一次 
        if(q==0||q==2) cout<<"("<<q<<")";//尽头 
        if(q>=3)//先对指数进行递归 接着进行分割 
        {
            cout<<"(";
            dfs(q);
            cout<<")";

        }
        x-=a/2;//剩下的进行递归 也就是奇数,无法接着进行分割 
        if(x)
        {
            cout<<"+";//接着计算 
            dfs(x);
        }
    }
}
int main()
{
    cin>>n;
    dfs(n);//进行分割的数 
    return 0;
}

http://www.niftyadmin.cn/n/851681.html

相关文章

竞合_百度百科

竞合_百度百科竞合编辑

1012 拼数

1012 拼数 首先我们得知道&#xff0c;这道题并不是一道贪心&#xff0c;而是排序模拟 一看数据范围&#xff0c;才20&#xff0c;直接把每种可能的拼法枚举一下然后比较就好了嘛&#xff1f;先试试 当然AC了 这道题其实就是枚举&#xff0c;因为数据很小&#xff0c;才20个数…

网工考试参考书

1.packer5 Tracer 5.0模拟器&#xff0c;官方出品&#xff0c;模拟性很强&#xff0c;NA的实验全能做&#xff0c;并且还可以直观的看到各板卡的应用和设备的外观。 2.网络工程师考试用书 a。《网络工程师教程》&#xff1b;必看&#xff0c;当做指导性大纲来看&#xff0c;由…

1015 回文数

1015 回文数 这一道题和之前我们做过的那道 幂次方 很像&#xff0c;都是得用到递归的 首先我们得先说题意 这道题&#xff0c;首先我们输入进制&#xff0c;然后输入这个数&#xff0c;每次将这个数和他的倒序进行相加&#xff0c;如果这个和不是回文数就接着相加&#xff0c…

阿姆达尔定律--并行计算经验法则

为什么80%的码农都做不了架构师&#xff1f;>>> 阿姆达尔定律&#xff1a;一个计算机科学界的经验法则&#xff0c;因吉恩阿姆达尔而得名。它代表了处理器平行运算之后效率提升的能力。 并行计算中的加速比是用并行前的执行速度和并行后的执行速度之比来表示的&…

Should It Matter(真的有关系吗)

Sissel Kyrkjebo&#xff08;西丝儿&#xff09;是挪威著名的女歌手&#xff0c;4岁时就参加儿童合唱团&#xff0c;并开始在挪威电视台多次露面。她从16岁出第一张唱片&#xff0c;以其空灵清澈的音色踏入歌坛超过10年。《All Good Things》是Sissel首张唱流行曲的唱片&#x…

《C语言》变量(3)

整数类型 下表列出了关于标准整数类型的存储大小和值范围的细节&#xff1a; 类型存储大小值范围char1 字节-128 到 127 或 0 到 255unsigned char1 字节0 到 255signed char1 字节-128 到 127int2 或 4 字节-32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647unsigned int…

1017 进制转换

1017 进制转换 这道题涉及到负进制之间的知识点 这道题意思就是输入一个数&#xff0c;将这个数转成base进制的 首先我们得先明白一个式子&#xff1a; 除数*商余数被除数这就是本题的关键&#xff0c;其实这道题特别水&#xff0c;我们一开始输入的数是一个十进制的数&#…