每个正数都可以用指数形式表示。
例如, 137 = 2 7 + 2 3 + 2 0 137=2^7+2^3+2^0 137=27+23+20。
让我们用 a ( b ) a(b) a(b) 来表示 a b a^b ab。
那么 137 137 137 可以表示为 2 ( 7 ) + 2 ( 3 ) + 2 ( 0 ) 2(7)+2(3)+2(0) 2(7)+2(3)+2(0)。
因为 7 = 2 2 + 2 + 2 0 7=2^2+2+2^0 7=22+2+20, 3 = 2 + 2 0 3=2+2^0 3=2+20,所以 137 137 137 最终可以表示为 2 ( 2 ( 2 ) + 2 + 2 ( 0 ) ) + 2 ( 2 + 2 ( 0 ) ) + 2 ( 0 ) 2(2(2)+2+2(0))+2(2+2(0))+2(0) 2(2(2)+2+2(0))+2(2+2(0))+2(0)。
给定一个正数 n n n,请你将 n n n 表示为只包含 0 0 0 和 2 2 2 的指数形式。
输入格式
输入包含多组数据。
每组数据占一行,一个正数 n n n。
输出格式
每组数据输出一行,一个指数形式表示。
数据范围
1
≤
n
≤
20000
,
1≤n≤20000,
1≤n≤20000,
每个输入最多包含
100
100
100 组数据。
输入样例:
1315
输出样例:
2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)
#include
using namespace std;
void dfs(int n){
bool flag = true;
for(int i = 14; i >= 0; i--){
if(n >> i & 1){
if(flag) flag = false;
else cout << '+';
cout << 2;
if(i != 1) cout << '(';
if(i >= 3) dfs(i);
else{
if(i != 1) cout << i;
}
if(i != 1) cout << ')';
}
}
}
int main(){
int n;
while(cin >> n) dfs(n), puts("");
return 0;
}