zoukankan      html  css  js  c++  java
  • 2的幂次方表示

    2的幂次方表示

    链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1208


    时间限制: 1000 ms         内存限制: 65536 KB

    【题目描述】

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

    137=27+23+20

    同时约定方次用括号来表示,即ab可表示为a(b)。由此可知,137可表示为:

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

    进一步:7=22+2+20(21用2表示)

    3=2+20

    所以最后137可表示为:

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

    又如:

    1315=210+28+25+2+1

    所以1315最后可表示为:

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

     

    【输入】

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

    【输出】

    一行,符合约定的n的0,2表示(在表示中不能有空格)。

    【输入样例】

    137

    【输出样例】

    2(2(2)+2+2(0))+2(2+2(0))+2(0)
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    int a[18];
    void dfs(int x)
    {
        if(x==2)
        {
            printf("2");
            return ;
        }
        if(x==1)
        {
            printf("2(0)");return ;
        }
        
        for(int i=15;i>=0;i--)
        {
            if(x-a[i]>=0)
            {
                x-=a[i];
                if(i==1)printf("2");
                else if(i==0)printf("2(0)");
                else 
                {
                    printf("2(");dfs(i);printf(")");
                }
                if(x)printf("+");
                else return;
                
            }
            
        }
    }
    int main()
    {
        int n;
        cin>>n;
        a[0]=1;
        for(int i=1;i<=15;i++)a[i]=a[i-1]*2;
        dfs(n);    
    }
  • 相关阅读:
    python3.5 安装mysqlclient
    python mysqlclient安装失败 Command "python setup.py egg_info" failed with error code 1
    python mysqlclient安装失败 Command "python setup.py egg_info" failed with error code 1
    JUC-多线程锁
    JUC-线程间通信
    JUC-LOCK接口
    JUC-JUC是什么?
    Zookeeper
    Mac 安装IDEA 2018.3 版本
    MyISAM和innoDB
  • 原文地址:https://www.cnblogs.com/EdSheeran/p/7750227.html
Copyright © 2011-2022 走看看