P1010 幂次方

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

主要是用递归的方法 一开始我还在想怎么输出左右括号 其实只需要在递归之前输出左括号 递归之后输出右边括号就行了

上代码:

#include<bits/stdc++.h>

using namespace std;

void mi(int n)
{
    int y,i,f=1; 
    if(n==0)
    return;
    for(i=0;i<=16;i++)
    if(pow(2,i)>n)
    {
        y=--i;
        break;
    }
    if(y==0)
    cout<<"2(0)";
    else if(y==1)
    cout<<"2";
    else if(y>1) 
    {
        cout<<"2(";
        mi(y);
        cout<<")";

    }
    if(n!=pow(2,y))
    {    cout<<"+";
        mi(n-pow(2,y));
    }
}


int main()
{
    int n;
    cin>>n;
    mi(n);
}
原文地址:https://www.cnblogs.com/dyhaohaoxuexi/p/10692873.html