ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

P1010 幂次方

2019-04-12 12:50:27  阅读:254  来源: 互联网

标签:表示 1315 样例 P1010 137 次方 格式 include


题目描述

任何一个正整数都可以用 \(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^7\) 用 \(2\) 表示),并且

\(3=2+2^0\)

所以最后$ 137 $可表示为:

\(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+1\)

所以 \(1315\) 最后可表示为:

\(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\) 的 \(0,2\) 表示(在表示中不能有空格)

输入输出样例

输入样例#1:

1315

输出样例#1:

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

分析

分治法递归求解

关于找最大幂 可以用公式 \(floor(log(n)/log(2))\) 也可以循环移位找

要注意 2 的处理 加法的位置

代码

#include<iostream>
#include<cmath>

using namespace std;

void fun(int n){
    if(n==1){
        cout<<"2(0)";
    }else if(n==2){
        cout<<"2";
    }else if(n==4){
        cout<<"2(2)";
    }else{
        int a;
        while(1){
            if(n==0){
                break;
            }else if(n==1||n==2||n==4){
                fun(n);
                break;
            }else{
                a = floor(log(n)/log(2));

                if(a==1){
                    cout<<"2";
                }else{
                    cout<<"2(";
                    fun(a);
                    cout<<")";
                }
                if(n-pow(2,a)){cout<<"+";}  
            }
               n = n-pow(2,a);                      
        }
    }
}

int main(){
    int n;
    cin>>n;
    fun(n);
    return 0;
}

标签:表示,1315,样例,P1010,137,次方,格式,include
来源: https://www.cnblogs.com/wendiudiu/p/10695323.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有