概述
【题目】:
每个正数都可以用指数表示表格。用于例如,137=2^7+2^3+2^0。我们用 a(b) 的形式表示a^b,然后用2(7)+2(3)+2(0)表示137。由于7=2^2+2+2^0和3=2+2^0,
137最终由2(2(2)+2+2(0))+2(2+2(0))+2(0)表示。给定一个正数n,你的任务是用只包含数字0和2的指数形式表示n。
示例1
输入
1315
输出
2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
string changefrom(int n)//把数字变成二进制
{
string str="";
while(n!=0)
{
str.insert(0,1,n%2+'0');
n/=2;
}
return str;
}
int shuchu(int n)
{
string s;
int num=0;
s=changefrom(n);
for(int i=0;i<s.size();i++)//用num记录'1'的个数
{
if(s[i]=='1')
num++;
}
if(n==2||n==0||n==1)
{
if(n!=1)
cout<<n;
}
else{
int m=0;
for(int i=0;i<s.size();i++)
{
if(s[i]=='1')
{
m++;
cout<<"2";
if(s.size()-1-i!=1)
cout<<'(';
shuchu(s.size()-1-i);//shuchu(s.size()-1-i);
if(s.size()-1-i!=1)
cout<<')';
if(m!=num)
cout<<"+";
}
}
}
return 0;
}
int main()
{
int n;
while(cin>>n)
{
shuchu(n);
cout<<endl;
}
return 0;
}
最后
以上就是娇气短靴为你收集整理的递归——2的幂次方的全部内容,希望文章能够帮你解决递归——2的幂次方所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复