洛谷题解P1010 幂次方

一、题目

https://www.luogu.org/problemnew/show/P1010

二、代码

#include<bits/stdc++.h>
using namespace std;

// 根据2的几次幂进行分解
string decompose(int num)
{
    if(num==0)
    {
        return "0";
    }

    string s = "";
    int exp = 0;  // 指数,比如2=2^1,则指数为1
    do
    {
        if(num & 1) // 判断奇数
        {
            // num=2时,exp==1才为真
            string tmp1 = exp==1 ? "2" : "2("+decompose(exp)+")";
            string tmp2 = s=="" ? "" : "+";

            // 拼接字符串,依题意,要把低次方接在后面
            s = tmp1 + tmp2 + s;
        }

        exp++;
    } while(num >>= 1);//每次向右移一位,即除以2

    return s;
}

int main()
{
    int x;
    cin>>x;
    cout<<decompose(x)<<endl;
    return 0;
}

少儿编程、信息学竞赛咨询请加微信307591841或QQ群581357582

《洛谷题解P1010 幂次方》 信息学竞赛公众号.jpg

    原文作者:海天一树X
    原文地址: https://www.jianshu.com/p/5f2713f8c582
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞