#include<iostream>
#include<cmath>
#include<cstdio>
#include<algorithm>
using namespace std;
int n;
void dfs(int num) {
int cnt = 0;
int i = 0, j;
int mi[32];
while (num) {
j = num % 2;
if (j)
mi[cnt++] = i;//i表示第cnt个底数为2的幂
i++;
num /= 2;
}
for (i = cnt-1; i >= 0; i--) {
if (mi[i] == 0) printf("2(0)");
else if (mi[i] == 1) printf("2");
else if (mi[i] == 2) printf("2(2)");
else if (mi[i] > 2) { //幂>2还要拆分
printf("2(");
dfs(mi[i]);
printf(")");
}
if (i != 0) printf("+");
}
}
int main() {
cin >> n;
dfs(n);
return 0;
}
蓝桥杯 算法训练 ALGO-95 2的次幂表示
最新推荐文章于 2022-03-28 20:40:03 发布