算法训练 2的次幂表示

简介: 算法训练 2的次幂表示

问题描述


 任何一个正整数都可以用2进制表示,例如:137的2进制表示为10001001。

 将这种2进制表示写成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)


输入格式


 正整数(1<=n<=20000)


输出格式


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


样例输入

137

样例输出


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


样例输入


1315


样例输出


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


提示

用递归实现会比较简单,可以一边递归一边输出


难点1:输出顺序,因为要从高位向地位输出所以此处选择转换为二进制的方法

难点2:加号,也不算难,但是如果处理不当就是零分


Gcc编译通过

#include <stdio.h>
/*因为数据规模20000,所以两个字节足够了*/
#define N 16
void fun(int n)
{
   if(n==0){
    printf("2(0)");
    return;
   }else if(n==1){
    printf("2");
    return;
   }else if(n==2){
    printf("2(2)");
    return ;
   }
   /*进制转换*/ 
   int cnt=-1,ca=0;
   char a[N];
   for(;n;n=n/2){
    a[++cnt]=n%2;
   }
   /*主要函数体*/
   for(;cnt>=0;cnt--){
    if(a[cnt]){
        if(cnt<=2){
            fun(cnt);
        }else{
            printf("2(");
            fun(cnt);
            printf(")");
        }
        /*判断加号*/
        for(ca=cnt-1;ca>=0&&!a[ca];ca--);
        if(ca>=0){
            printf("+");
        }
    }
   }
}
int main(void)
{
    int n;
    scanf("%d",&n);
    fun(n);
    return 0;
}

644B

C

正确

100

0ms

784.0KB

相关文章
|
6月前
|
算法 Java Serverless
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-444 算法训练 求和问题
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-444 算法训练 求和问题
56 1
|
6月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-439 算法训练 简单字符变换
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-439 算法训练 简单字符变换
54 1
|
1月前
|
存储 机器学习/深度学习 算法
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
蓝桥杯Python编程练习题的集合,涵盖了从基础到提高的多个算法题目及其解答。
60 3
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
|
18天前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
1月前
|
机器学习/深度学习 算法 决策智能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
|
1月前
|
算法 Java C++
【贪心算法】算法训练 ALGO-1003 礼物(C/C++)
【贪心算法】算法训练 ALGO-1003 礼物(C/C++)
【贪心算法】算法训练 ALGO-1003 礼物(C/C++)
|
1月前
|
算法 C++
蓝桥 算法训练 共线(C++)
蓝桥 算法训练 共线(C++)
|
4月前
knn增强数据训练
【7月更文挑战第27天】
36 10
|
4月前
|
数据采集 编解码 人工智能
破解ChatGPT惊人耗电!DeepMind新算法训练提效13倍,能耗暴降10倍
【7月更文挑战第19天】DeepMind的JEST算法革新AI训练,提升效率13倍,节能10倍。通过联合数据批次选择,预训练指导及多分辨率训练,优化资源利用,降低能耗。实验显示性能提升,达到SOTA水平,但实施需大量资源,依赖优质参考模型。[论文链接](https://arxiv.org/pdf/2406.17711)
69 10
|
4月前
knn增强数据训练
【7月更文挑战第28天】
40 2