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)
    思路:搜索。
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int n,tot;
    int num[100];
    void dfs(int x){
        int sum=0,tmp[1000]={0};
        while(x){ tmp[sum++]=x%2;x/=2; }
        for(int i=sum-1;i>=0;i--)
            if(tmp[i]){
                if(i==0)    cout<<"2(0)";
                else if(i==1)    cout<<"2";    
                else{ cout<<"2(";dfs(i);cout<<")"; }
                tmp[i]=0;
                break;
            }
        for(int i=tot-1;i>=0;i--)
            if(tmp[i]){
                if(i==0)    cout<<"+2(0)";
                else if(i==1)    cout<<"+2";    
                else{ cout<<"+2(";dfs(i);cout<<")"; }
            }
    }
    int main(){
        scanf("%d",&n);
        while(n){ num[tot++]=n%2;n/=2; }
        for(int i=tot-1;i>=0;i--)
            if(num[i]){
                if(i==0)    cout<<"2(0)";
                else if(i==1)    cout<<"2";    
                else{ cout<<"2(";dfs(i);cout<<")"; }
                num[i]=0;
                break;
            }
        for(int i=tot-1;i>=0;i--)
            if(num[i]){
                if(i==0)    cout<<"+2(0)";
                else if(i==1)    cout<<"+2";    
                else{ cout<<"+2(";dfs(i);cout<<")"; }
            }
    }
     
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    A Survey of Deep Clustering Algorithms
    随机傅里叶特征(Random Fourier Features)
    MATLAB实例:二元高斯分布图
    MATLAB实例:PCA(主成成分分析)详解
    MATLAB用“fitgmdist”函数拟合高斯混合模型(一维数据)
    Extreme Learning Machine
    在MATLAB R2018b中配置VLFeat
    Deep Clustering Algorithms
    机器学习优化算法
    sql注入总结
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/7900579.html
Copyright © 2011-2022 走看看