[分治算法]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;
}
上一篇: 我哭了
下一篇: P1010 幂次方(优雅分治)