这是我关于P1010问题的解答
查看原帖
这是我关于P1010问题的解答
653728
orgins楼主2024/8/7 00:35

虽然做对了,但感觉却是为了应付答案而答题,有无大佬帮忙指导一下思路,感谢!

#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);
		}

		
	}
}
2024/8/7 00:35
加载中...