http://noi.openjudge.cn/ch0202/8758/
"""
2.2 基本算法之递归和自调用函数 8758 2的幂次方表示 python
http://noi.openjudge.cn/ch0202/8758/
"""
def calculate(n,step):
if n==0:
return
calculate(n//2,step+1)
if n%2==1:
if n//2!=0:
print("+",end='')
if step==1:
print("2",end='')
else:
print("2(",end='')
if step==0:
print("0",end='')
else:
calculate(step,0)
print(")",end='')
n=int(input())
calculate(n,0)
C++代码:
/*
2.2 基本算法之递归和自调用函数 8758 2的幂次方表示
http://noi.openjudge.cn/ch0202/8758/
*/
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#define N 1000010
using namespace std;
void calculate(int n,int step)
{
if(n==0)
return;
calculate(n/2,step+1);
if(n%2)
{
if(n/2)
cout<<"+";
if(step==1)
cout<<"2";
else
{
cout<<"2(";
if(step==0)
cout<<"0";
else
calculate(step,0);
cout<<")";
}
}
}
int main()
{
int n;
cin>>n;
calculate(n,0);
cout<<endl;
return 0;
}