解题思路:
注意事项:
注意二进制有可能超过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分
1 人评分