#include<iostream>
#include<string>
using namespace std;
string f(int n){
string str = "", str1;
if (n == 0) return "0"; //2的0次方 ,
if (n == 2) return "2"; //2的2次方
while (n > 0){ //吧n拆解成2的幂次方
int m = 1,k=0;
while (m<=n) //找到某个2的幂次方
{
m <<= 1;
k++;
}
k--;
n -= m / 2;
str1 += "2"; //添2
if (k != 1)
{
str1 += "("; //添括号
str1 += f(k);//继续递归寻找
str1 += ")";
}
if (n != 0){
str1 += "+"; //如果n!=0,还有2的幂次方需要添加+号
}
}
return str1;
}
int main()
{
int n;
cin >> n;
cout << f(n);
}
dp,洛谷p1010
最新推荐文章于 2024-10-03 03:56:43 发布