虽然做对了,但感觉却是为了应付答案而答题,有无大佬帮忙指导一下思路,感谢!
#include <stdio.h>
#include<math.h>
int Flag = 0;
void Power_power(int n);
int main() {
int n;
scanf("%d", &n);
Power_power(n);
return 0;
}
void Power_power(int n) {
while (n != 0)
{
int flag = 0;
int m = 0;
while (pow(2, m) <= n)
{
m++;
}
n -= (int)pow(2, m - 1);
m--;
if (n == 0&&(m==2||m==0))
{
printf("2(%d)", m);
break;
}
if (n == 0 && m == 1)
{
printf("2");
break;
}
if (m != 2 && m != 1 && m != 0)
{
flag = 1;
Flag++;
printf("2(");
Power_power(m);
if ((pow(2,m)==pow(m,2)&&m!=4)||n==0) {
printf(")");
}
else
{
printf(")+");
}
Flag--;
}
if (m == 1&&n!=0)
{
printf("2+");
}
else if(flag == 0)
{
printf("2(%d)+",m);
}
}
}