题目描述(上交考研机试题)
每个正数都可以用指数形式表示。
例如,137=2^7+2^3+2^0。
让我们用 a(b) 来表示 a^b。
那么 137 可以表示为 2(7)+2(3)+2(0)。
因为 7=2^2+2+2^0,3=2+2^0,所以 137 最终可以表示为 2(2(2)+2+2(0))+2(2+2(0))+2(0)。
给定一个正数 n,请你将 n 表示为只包含 0 和 2 的指数形式。
样例
输入样例
1315
输出样例
2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)
数据范围
1≤n≤20000 ,
每个输入最多包含 100 组数据。
解题思路
递归
#include<iostream>
using namespace std;
string func(int a){
if(a == 0) return "0";
string ans = "";
for(int i = 15; i >= 0; --i)
if(a >> i & 1)
ans += i == 1 ? "2+" : "2("+func(i)+")+";
return ans.substr(0, ans.size()-1);
}
int main(){
int n;
while(cin>>n)
cout<<func(n)<<endl;
}