• 【9406】2的幂次方


    Time Limit: 10 second
    Memory Limit: 2 MB

    问题描述
    任何一个正整数都可以用2的幂次方表示.
    例如:137=2^7+2^3+2^0
    同时约定次方用括号来表示,即a^b可表示为a(b)
    由此可知,137可表示为:2(7)+2(3)+2(0)
    进一步:7=2^2+2+2^0 (2^1用2表示)
    3=2+2^0
    所以最后137可表示为:2(2(2)+2+2(0))+2(2+2(0))+2(0)
    又如:1315=2^10+2^8+2^5+2+1
    所以1315最后可表示为:2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)
    Input

    正整数(n<=20000)

    Output

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

    Sample Input

    73

    Sample Output

    2(2(2)+2)+2(2+2(0))+2(0)
    【题目链接】:http://noi.qz5z.com/viewtask.asp?id=9406

    【题解】

    数字最大为2e4;
    log2e4大概为15;
    就预处理处理出0..15的二进制形式就好(写成字符串);
    (直接手算就好);
    然后对n进行求二进制的过程;
    对最后为1的位加上相应的权2^x即可;
    x用预处理出的0..15输出即可;
    然后有些地方要注意下
    2^3要写成2^(2(2+2^(0));
    不能出现3;
    再有就是2^1要把1去掉;即只输出2;

    【完整代码】

    #include <cstdio>
    #include <iostream>
    #include <vector>
    #include <string>
    
    using namespace std;
    
    int n;
    string a[16];
    vector <string> ans;
    
    void get_ans(int x,int num)
    {
        if (x==0)
            return;
        get_ans(x>>1,num+1);
        if (x&1)
        {
            if (num==1)
                ans.push_back("2");
            else
                ans.push_back("2(" + a[num] + ")");
        }
    }
    
    int main()
    {
        //freopen("F:\rush.txt","r",stdin);
        a[0] = "0";
        a[1] = "2(0)";
        a[2] = "2";
        a[3] = "2+2(0)";
        a[4] = "2(2)";
        a[5] = "2(2)+2(0)";
        a[6] = "2(2)+2";
        a[7] = "2(2)+2+2(0)";
        a[8] = "2("+a[3]+")";
        a[9] = a[8]+"+"+a[1];
        a[10] = a[8]+"+"+a[2];
        a[11] = a[8]+"+"+a[2]+"+"+a[1];
        a[12] = a[8]+"+"+a[4];
        a[13] = a[8]+"+"+a[5];
        a[14] = a[8]+"+"+a[6];
        a[15] = a[8]+"+"+a[7];
        cin >> n;
        get_ans(n,0);
        int len = ans.size();
        for (int i = 0;i <= len-1;i++)
        {
            cout << ans[i];
            if (i==len-1)
                cout <<'
    ';
            else
                cout <<'+';
        }
        return 0;
    }
    
  • 相关阅读:
    [Android]SharedPreferences
    [Android]XML界面布局常用属性概括
    [Android]XML解析技术
    [Android]Layout标签之-viewStub,requestFocus,merge,include
    [Android]JSON
    [Android]SQLite基本控制台命令简介
    [Android]流文件
    [HTML5]WebSQLDatabase-关系型数据库简介
    [Android]ADB和NavicatLiteSQLDBmanager的数据管理
    [Android]SqliteOpenHelper抽象类实现SQL_DB的管理
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7626960.html
Copyright © 2020-2023  润新知