#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
void f(int n)
{
if (n == 1)
{
cout << "2(0)";
return;
}
if (n == 2)
{
cout << "2";
return;
}
int num = 1, cnt = 0;
while (num <= n)
{
num *= 2;
cnt++;
}
num /= 2;
cnt--;
if (num == n)//判断能不能直接用2的整数幂表示n
{
cout << "2(";
f(cnt);
cout << ")";
}
else//否则,输出当前2的幂加上一个东西
{
if (num == 2)//对2这种特殊情况单独考虑
{
cout << "2";
cout << "+";
f(n - num);
}
else
{
cout << "2(";
f(cnt);
cout << ")+";
f(n - num);
}
}
}
int main()
{
int x;
cin >> x;
f(x);
cout << endl;
return 0;
}
百练:2的幂次方表示
最新推荐文章于 2022-04-20 22:46:58 发布