• 幂次方


    题目:幂次方

    任何一个正整数都可以用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,但递归显然更高大上(并不),如果理清递归思路,将是对思维的极大锻炼,唯一的方式,就是多刷题了。

  • 相关阅读:
    JavaScript 弹窗
    创建对象构造器
    DOM事件
    document对象“还在更新”
    JavaScript 闭包
    使用 "use strict" 指令
    constructor 属性
    2019暑期集训第一周小结
    无向图求割边
    矩阵快速幂
  • 原文地址:https://www.cnblogs.com/648-233/p/10402351.html
Copyright © 2020-2023  润新知