洛谷题解P1010 幂次方

作者: 海天一树X | 来源:发表于2019-03-28 15:34 被阅读8次

    一、题目

    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


    信息学竞赛公众号.jpg

    相关文章

      网友评论

        本文标题:洛谷题解P1010 幂次方

        本文链接:https://www.haomeiwen.com/subject/vroqbqtx.html