加扰步骤:
1.先把每个整数每两个bit交换位置,如bit0和bit1交换,bit2和bit3交换,依次类推。
2.再把每个整数向右移2位,溢出的部分,第一个整数的最低2bit移到第二个整数的最高2bit上,第二个整数的最低2bit移到第三个。如果输入只有一个整数,溢出的2bit移到自己的最高2bit上。
说明,无符号整数的范围不超过32bit整数大小。
输入描述
输入n个无符号整数,两个整数直接用空格分开。n不超过1000.
输出描述
输出加扰后的无符号整数,两个整数直接用空格分开。
示例1
输入
1 2
输出
1073741824 2147483648
# strip() 用于移除字符串头尾指定的字符
#s = 'hhh abdf hhhh' s2 = s.strip('h')
# map(function, iterable, ...)
# bin(x) bin(10)-> 0b1010 bin()
#返回一个整数 int 或者长整数 long int 的二进制表示
arr=list(map(int,input().strip().split()))
st=[]
#int-> 32bit
for x in arr:
# y 获得 x 的二进制表示 并移除头字符'0b'
y=bin(x).replace('0b','')
# 把y补全为32bit,int为4字节32bit
for j in range(32-len(y)):
y ='0'+y
st.append(y)
# 奇偶bit数值交换
for i in range(len(st)):
# te深拷贝st[i]
te = list(st[i])
for j in range(16):
te[2*j],te[2*j+1]=te[2*j+1],te[2*j]
st[i]=''.join(te)
# x 获取第一个数的溢出后两位
x=st[0][-2:]
res=[]
#循环传递
for i in range(1,len(st)):
te=x+st[i][:-2]
res.append(te[:])
x=st[i][-2:]
#把第n个数溢出发两位加回第一个数的头两位,加在链表尾部
res.append(x+st[0][:-2])
#把二进制转为10进制,先输出第一个数
print(int(res[-1],2), end='')
#按照顺序输出剩余的数
for i in range(len(res) - 1):
print(' {}'.format(int(res[i],2)), end='')
# print(int(res[i], 2), end=' ')
输入描述
依次给出n个矩形箱子的宽度[1,100]和高度[1,100].为简化起见,最多20个箱子
输出描述
海报可用的最大矩形面积。
如果输入参数有任何错误或者非法输入,返回0;
示例
输入
[1,1,1,1,2,1,1],[5,2,5,4,5,1,6]
输出
16
st=input()
for k in range(len(st)):
if st[k]==']':
break
w=list(map(int,st[1:k].split(',')))
h=list(map(int,st[k+3:-1].split(',')))
heights=[]
#判断非法条件
if len(w) == 0 or len(h) == 0 \
or len(w) != len(h) \
or min(w)<1 or min(h) < 1 \
or max(w) > 100 or max(h) > 100:
print(0)
else:
#把问题变成间隔为1的leetcode 84最大柱面积问题
for i in range(len(w)):
for j in range(w[i]):
heights.append(h[i])
stack = [-1]
res = 0
heights.append(-1)
for idx, val in enumerate(heights):
# print(stack[-1], i, val)
#高的出栈。低的入栈
while heights[stack[-1]] > val:
h = heights[stack.pop()]
res = max(res, h*(idx - stack[-1] -1))
stack.append(idx)
print(res)
输入描述
第一行输入单词长度P(1<=P<=26)
第二行输入Y猜测的次数N(0
输出描述
表示X想出的单词的字符串
示例
输入
5
5
cloxy 3 0
cxmnu 1 1
kcotd 2 1
apqud 2 0
bldwz 1 1
输出
cloud
在这里插入代码片