zoukankan      html  css  js  c++  java
  • 【洛谷】P1010 幂次方(分治+递归)

    题目链接

    题目描述

    任何一个正整数都可以用 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)

    输入输出格式

    输入格式:

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

    输出格式:

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

    输入输出样例

    输入样例#1: 复制

    1315

    输出样例#1: 复制

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

    分治+递归

    AC代码:

     1 #include<iostream>
     2 #include<sstream>
     3 #include<algorithm>
     4 #include<string>
     5 #include<iomanip>
     6 #include<vector>
     7 #include<cmath>
     8 #include<stack>
     9 using namespace std;
    10 void fun(int i)//将i分解
    11 {
    12     if(i==0) 
    13     {
    14         cout<<"0";return;
    15     }
    16     else if(i==1) 
    17     {
    18         cout<<"2(0)";return;
    19     }
    20     else if(i==2) 
    21     {
    22         cout<<"2";return;
    23     }
    24     else 
    25     {
    26         int t=0;
    27         while((1<<t)<=i) t++;
    28         t-=1;
    29         if(t!=1)
    30         {
    31             cout<<"2(";
    32                 fun(t);
    33                 cout<<")";
    34         }
    35         else cout<<"2";
    36             int res=i-(1<<t);
    37             if(res!=0) 
    38         {
    39             cout<<"+";fun(res);
    40         }
    41     }
    42 }
    43 int main()
    44 {
    45     int n;
    46     cin>>n;
    47     fun(n);
    48 }
    49  
    View Code
  • 相关阅读:
    Maven 环境的配置
    zTree的简单例子
    plsql免安装客户端的配置
    HDU 1232 畅通工程
    HDU 5698 瞬间移动
    Codeforces 1015E1 Stars Drawing (Easy Edition)
    Codeforces 784B Santa Claus and Keyboard Check
    Codeforces 500C New Year Book Reading
    NSarray 赋值 拷贝 等问题记录
    UINavigationController 操作记录
  • 原文地址:https://www.cnblogs.com/wangzhebufangqi/p/12796169.html
Copyright © 2011-2022 走看看