zoukankan      html  css  js  c++  java
  • 幂次方

    题目:幂次方

    任何一个正整数都可以用22的幂次方表示。例如

    137=2^7+2^3+2^0137=27+23+20

    同时约定方次用括号来表示,即a^bab 可表示为a(b)a(b)。

    由此可知,137137可表示为:

    2(7)+2(3)+2(0)2(7)+2(3)+2(0)

    进一步:

    7= 2^2+2+2^07=22+2+20(2^1用2表示),并且

    3=2+2^03=2+20

    所以最后137137可表示为:

    2(2(2)+2+2(0))+2(2+2(0))+2(0)2(2(2)+2+2(0))+2(2+2(0))+2(0)

    又如:

    1315=2^{10} +2^8 +2^5 +2+11315=210+28+25+2+1

    所以13151315最后可表示为:

    2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)

    输入格式:

    一个正整数n(n≤20000)n(n20000)。

    输出格式:

    符合约定的nn的0,20,2表示(在表示中不能有空格)

    样例:

    cin>>1315

    cout<<2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)

    代码:

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<iomanip>
    #include<cmath>
    using namespace std;
    int search(int a)
    {
        int t;
        int b;
        int k=a;
        for(int i=1;i<=14;i++)
        {
            t=1;
            for(int j=1;j<=15;j++)
            {
                t*=2;
                if(t>k)
                {
                    b=j-1;
                    break;
                }
            }
            t=t/2;
            k-=t;
            if(b>=3)
            {
                cout<<"2(";
                search(b);
                cout<<")";
                if(k>0)
                cout<<"+";
            }
            if(b==2)
            {
                cout<<"2(2)";
                if(k>0)
                cout<<"+";
            }
            if(b==1)
            {
                cout<<2;
                if(k>0)
                cout<<"+";
            }
            if(b==0)
            cout<<"2(0)";
            if(k<=0)
            break;
        }
    }
    int main()
    {
        int n;
        cin>>n;
        search(n);
    }

    本题是我用递归算法做出的第一道题,当然此题也可暴力打表,因为20000<2^15,但递归显然更高大上(并不),如果理清递归思路,将是对思维的极大锻炼,唯一的方式,就是多刷题了。

  • 相关阅读:
    LeetCode 11. Container With Most Water
    LeetCode 10 Regular Expression Matching
    LeetCode 9 Palindrome Number
    LeetCode 8 String to Integer (atoi)
    从ASP.NET Core 3.0 preview 特性,了解CLR的Garbage Collection
    HttpClient参观记:.net core 2.2 对HttpClient到底做了神马
    LeetCode 7 Reverse Integer
    《地久天长》观影笔记
    《小丑》观后感
    粒子群基本算法学习笔记
  • 原文地址:https://www.cnblogs.com/648-233/p/10402351.html
Copyright © 2011-2022 走看看