char 4977 歌词改编
tmp = 'aeiou'
tmp2 = 'AEIOU'
#大写字母A的编号为:65,大写字母Z的编号为90,小
# 写字母a的编号为:97,小写字母z的编号为122;
# 大小写字母之间的编号相差32
t = int(input())
for t in range(t):
s = input()
ans = ''
for i in s:
if i in tmp:
i = chr(ord(i)-32)
elif i not in tmp2 and 65<=ord(i)<=90:
i = chr(ord(i)+32)
ans += i
print(ans)
位移
通过位移运算将数字 𝑎a 变成数字 𝑏b 。左移和右移的运算规则为:逻辑左移,高位丢弃,低位补 0;逻辑右移,高位补 0,低位丢弃。如 0000100,逻辑左移 1 位为 0001000 ;逻辑右移 1 位为 0000010 。(需着重注意左移高位的变化)
import sys
input = sys.stdin.readline
t=int(input())
for i in range(t):
a,b=map(int,input().split())
if a==b or b==0 :
print('Yes')
else:
a=str(bin(a))[2:]
b=str(bin(b))[2:].strip('0') #除去左右的0,lstrip,rstrip
if b in a:
print('Yes')
else:
print('No')
'''
因为bin(a)得到的是0b……, 因此需要把前两位给去掉也就是:
a = str(bin(a))[2:],只要b中的除去0的剩下部分是a的子集就可以了
'''
前缀和 # 3419 小郑的蓝桥平衡串
def get_presum(a):
sum = [0]*len(a)
sum[0] = a[0]
for i in range(1,len(a)):
sum[i] = sum[i-1] + a[i]
return sum
def get_sum(sum,l,r):
if l==0:
return sum[r]
else:
return sum[r]-sum[l-1]
s = input()
a = []
for i in s:
if i == 'L':
a.append(1)
if i == 'Q':
a.append(-1)
sum = get_presum(a)
ans = 0
for l in range(len(a)):
for r in range(l,len(a)):
if get_sum(sum,l,r) == 0:
ans = max(ans,r-l+1)
print(ans)
字典排序
n = int(input())
idx = {}
for i in range(n):
a,b = map(int,input().split())
idx[a]=b
print(idx)
idx = dict(sorted(idx.items(),key=lambda x:x[1]))
for x in idx.keys():
print(x)
差分 3291 区间更新
while True:
try:
n , m = map(int,input().split())
a = list(map(int,input().split()))
diff = [0] * (n+1) #差分列表 要比原列表多1
diff[0] = a[0]
for i in range(1,n):
diff[i] = a[i]-a[i-1]
for j in range(m):
x,y,z=map(int,input().split())
x -= 1
y -= 1
diff[x] += z
diff[y+1] -= z
a[0] = diff[0]
for k in range(1,n):
a[k] = a[k-1] + diff[k]
print(' '.join(map(str,a)))
except:
break