数据不是很强好像没被hack掉
#include<cstdio>
void dfs(int n,int mi) {
if(n<=0) {
return;
}
dfs(n>>1,mi+1);
if(n&1) {
if(n>1)
printf("+");
if(mi!=1) {
printf("2(");
if(mi>0)
dfs(mi,0);
else
printf("0");
printf(")");
}else {
printf("2");
}
}
return;
}
int main() {
int n;
scanf("%d",&n);
dfs(n,0);
return 0;
}
对于任何一个数,先深搜索,搜到最大的幂次,则不用 + 号,然后输出幂次,记得加几个特判。