欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

P1010 幂次方(优雅分治)

程序员文章站 2022-05-08 22:42:37
...

题目链接

#include<bits/stdc++.h>
using namespace std;
string run(int x,int i=0,string s=string("")){
    if(x==0)return ("0");
    do{
        if(x&1){
            s = ( i==1 ? "2" : "2(" + run(i) + ")" ) + ( s == "" ? "" : "+" ) + s ;
            //1. 2^1用2表示
            //2. s不为空的话 要有个加号 再加上s 否则就加上空串
            //3. 低次方接在后面
        }
    }while(++i,x>>=1);//二进制分解
    return s;
}
int main(){
    int n;
    scanf("%d",&n);
    cout<<run(n)<<endl;
}