解题思路:
注意事项:
参考代码:
from math import *
# 生成正常的列表
def func1(m):
list1=[]
while 1:
a=int(log(m,2))
cha=m-2**a
m=cha
if m==0:
list1.append(a)
return func2(list1)
else:
list1.append(a)
# 对列表进行括号处理
def func2(listx):
str1=""
for i in list(map(str,listx)):
if i=="1":
str1+=f"2+"
else:
str1+=f"2({i})+"
return str1[:-1]
#只需要一次转换
def func3(list2):
for i in range(len(list2)):
index=1
if list2[i]=="(" and list2[i+2]!=")":#小心
while 1:
if list2[i+index]!=")":
index+=1
else:
# 拼接
listx1=list2[:i+1]
listx2=[''.join(list2[i+1:i+index])]
listx3=list2[i+index:]
list2=listx1+listx2+listx3
return list2
return list2
num=eval(input())
listso=[]
list2=func3(list(func1(num)))
listso.append(list2)
while 1:
list2=func3(listso[-1])
listso.append(list2)
if listso[-1]==listso[-2]:
break
# 开始处理 转换
for w in range(10):
for k in range(len(list2)):
if list2[k]=="(" and int(list2[k+1])>2:
v=int(list2[k+1])
str3=func1(v)
# 替换
list2[k+1]=str3
# 拼接
list2=list(''.join(list2))
print(''.join(list2))
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复