SYCOJ4972的幂次方
递归题
#include<bits/stdc++.h>
using namespace std;
int k;
void f(int n,int step)
{
if(n==0) return;
f(n/2,step+1);
if(n%2==1)
{
if(n/2!=0)
{
printf("+"); //不为0,说明化到最简,回退,然后开始加,重点再回溯。
}
if(step==1)
{
printf("2");//当只剩下一步的时候,设置2。
}
else
{
printf("2(");
if(step==0)
{
printf("0");
}
else
{
f(step,0);//不断除以2,得到最终2的次方,然后当step=1;也就是剩下余数的时候,再回头把次方给解决掉,不断地2(
}
printf(")");
}
}
}
int main()
{
scanf("%d",&k);
f(k,0);
return 0;
}

浙公网安备 33010602011771号