2 条题解
-
3
听说可以用库函数做,但是自己模拟一遍也比较快
首先搞一个对应关系字符串
op = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
对于s的每一个字符,用
find()
函数找到对应的十进制数,然后用bin()
函数变为二进制(注意bin返回的东西是个字符串,前面有0x
的前缀,需要切片)由于转为十进制前是八位二进制数,我们需要补上前导0至八位,这里写一个函数:
def bu0(s): while len(s) != 8: s = "0"+s return s[2:]
然后给它放到一个列表中:
l = [] for i in s: l.append(bu0(bin(op.find(i))[2:]))
然后4个一组分组:
l1 = [] for i in range(0,len(l),4): t = l[i:i+4] s0 = "" for i in t: s0+=i l1.append(s0)
最后字符串拼接就可以了,先变为十进制,用累乘相加法写个函数:
def dec(s): ans = 0 for i in s: ans = ans*2+int(i) return ans
然后字符串拼接:
for i in l1: t = [] for j in range(0,len(i),8): ans+=chr(dec(i[j:j+8]))
全部代码:
def bu0(s): while len(s) != 8: s = "0"+s return s[2:] def dec(s): ans = 0 for i in s: ans = ans*2+int(i) return ans op = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" s = input() ans = "" l = [] for i in s: l.append(bu0(bin(op.find(i))[2:])) l1 = [] for i in range(0,len(l),4): t = l[i:i+4] s0 = "" for i in t: s0+=i l1.append(s0) for i in l1: t = [] for j in range(0,len(i),8): ans+=chr(dec(i[j:j+8])) print(ans)
- 1
信息
- ID
- 832
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 204
- 已通过
- 44
- 上传者