我是靠谱客的博主 娇气短靴,最近开发中收集的这篇文章主要介绍递归——2的幂次方,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

【题目】:

每个正数都可以用指数表示表格。用于例如,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的幂次方所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部