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

[分治算法]P1010 幂次方

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

P1010 幂次方

这题的主要收获是:有关加号的输出,对每一层递归,设立一个flag=0,每层的第一次递归将flag置为1,然后flag==1时输出+

int n;
void dfs(int t)
{
     if(t==1)
     {
         cout<<"2";
         return ;
     }
     else if(t==0)
     {
        cout<<"2(0)";
        return ;
     }
     else
     {
     int a[50],k=0,flag=0;
     while(t>0)
    {
       a[k++]=t%2;
       t/=2;
    }
    for(int i=k-1;i>=0;i--)
    {
        if(a[i]==1)
        {
            if(flag)
                printf("+");
            else
                flag=1;
            if(i!=0&&i!=1)
            cout<<"2(";
            dfs(i);
            if(i!=0&&i!=1)
            cout<<")";
        }
    }
      }
}
int main()
{
    scanf("%d",&n);
    dfs(n);
   return 0;
}