0
点赞
收藏
分享

微信扫一扫

洛谷题解P1010 幂次方

书坊尚 2022-08-04 阅读 66


一、题目

​​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;
}


洛谷题解P1010 幂次方_微信


举报

相关推荐

0 条评论