刹那(。・∀・)ノ゙ • 2年前
有两个解法
#include <iostream>
using namespace std;
int bin[20], m;
void my_power(int n)
{
int i;
int flag = 0;
while (n)
{
for (i = m; i >= 0; i--)
{
if (bin[i] <= n)
{
n = n - bin[i];
if (flag == 0)
flag = 1;
else
printf("+");
if (i > 1)
{
printf("2(");
my_power(i);
printf(")");
}
if (i == 1)
printf("2");
if (i == 0)
printf("2(0)");
}
}
}
}
int main()
{
int n, i, j;
cin>>n;
m = 0;
bin[0] = 1;
while (bin[m] < n)
{
m++;
bin[m] = bin[m - 1] * 2;
}
my_power(n);
return 0;
}
↑这是递归的
下面这个是不完整代码
#include <bits/stdc++.h>
using namespace std;
const int N=1e4+10;
int ans[N];
int top=0;
int main ()
{
int num;
cin>>num;
int step=0,a;
while(num)
{
step=0;
for(int j=1;j<=num;j=j*2)
{
if(j*2>num)
{
a=j;
break;
}
step++;
}
num=num-a;
ans[top++]=step;
}
for(int i=0;i<top-1;i++)
{
cout<<"2("<<ans[i]<<")+";
}
cout<<"2("<<ans[top-1]<<")";
return 0;
}
注意
这个代码只实现了最初的拆分,并不能拆分指数部分
仅供参考,自取
评论:
请先登录,才能进行评论