解题思路:

注意事项:
注意二进制有可能超过8位,而且少于8位时,可能会抹掉多余的零,为了统一后面,为不满8位的补了零,还有一个比较小的问题(可能我没有脑子记成二进制从后往前读,傻了傻了)用一个递归算法思路很简单
参考代码:

def binfun(n):
    m=format(n, 'b');ind=m.rfind("1");s=""
    for i in range(ind):
        if m[i] =="1":
            if i==len(m)-2:s += "2+"
            elif i==len(m)-3:s += "2(2)+"
            else:s+="2("+str(binfun(len(m)-1-i))+")+"
    if ind==len(m)-2:s += "2"
    elif ind==len(m)-1:s+="2(0)"
    elif ind== len(m)-3:s += "2(2)"
    else:s+="2("+str(binfun(len(m)-1-ind))+")"
    return s
n=int(input().strip());print(binfun(n))


点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论