洛谷 P1010 幂次方

时间:2022-06-12 11:07:56

做了好久,递归拆吧

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int fun(int);
int main()
{
          int n;
          cin>>n;
          fun(n);
}
int fun(int x)
{
           int i;
           for(int i=14;i>=0;i--)
          {
                 if(pow(2,i)<=x)                 //此时2^i<=x<2^i+1.。。。。之后运行完后边,它会继续运行i-1,i-1.....反正是比x小的2次方i
               {
                       if(i==0) cout<<"2(0)";
                       else if(i==1)cout<<"2";
                       else
                       {
                            cout<<"2(";
                            fun(i);
                            cout<<")";
                       }

x=x-pow(2,i);
                       if(x!=0)cout<<"+";

}

}

}