1、两组数的差异
题目内容:
给出两组相同数量的整数,求这两组整数的差异估算,即:对应数差值平方之和。
第一组为a1, a2…an
第二组为b1, b2…bn
求 (a1-b1)**2+(a2-b2)**2+…+(an-bn)**2
输入格式:两行,每行是一组整数,用空格隔开。
输出格式:一个整数。
a=list(map(int,input().split()))
b=list(map(int,input().split()))
Sum=0
for i in range(len(a)):Sum+=(a[i]-b[i])**2
print(Sum)
2、回文字符串
题目内容:
给定一个字符串,判断它是否是回文字符串(即类似于peep, 12321这样的对称字符串),如果是输出True,不是则输出False。
判断过程中假定只考虑字母和数字字符,而且忽略字母的大小写和其它符号(如空格、标点符号等)。
输入格式:共一行,为一个字符串。
输出格式:共一行,为True或False。
a=input()
b=[]
for i in a:
if 48 <= ord(i) <= 57 or 97 <=ord(i) <=122:b.append(i)
elif 65<=ord(i)<=90:b.append(chr(ord(i)+32))
i,j=0,len(b)-1
while i<=j:
if b[i]!=b[j]:
print(False)
break
i+=1
j-=1
else:print(True)
3、0的组合
题目内容:
给定一个包含若干个整数(可能存在重复整数)的列表,判断其中是否存在三个元素a,b,c,使得a+b+c=0?找出所有满足条件且不重复的这样的三个数的组合。
输入格式:共一行,列表中元素以空格隔开。
输出格式:共一行,为不重复组合的个数,不存在这样的组合就输出0
nums=list(map(int,input().split()))
nums.sort()
res = []
i = 0
for i in range(len(nums)):
if i == 0 or nums[i] > nums[i - 1]:
if nums[i] > 0: break
l = i + 1
r = len(nums) - 1
while l < r:
s = nums[i] + nums[l] + nums[r]
if s == 0:
res.append([nums[i], nums[l], nums[r]])
l += 1
r -= 1
while l < r and nums[l] == nums[l - 1]:
l += 1
while r > l and nums[r] == nums[r + 1]:
r -= 1
elif s > 0:
r -= 1
else:
l += 1
print(len(res))
4、乘积的列表
题目内容:
给定一个包含若干个整数的列表alist,要求返回输出列表blist,blist中的元素为除与alist对应位置上的元素之外其余各元素的乘积。
输入格式:共一行,列表中的元素以空格隔开。
输出格式:共一行,为一个列表。
a=list(map(int,input().split()))
b=[];Sm=1
for i in range(len(a)):
for j in range(len(a)):
if j!=i:Sm*=a[j]
b.append(Sm)
Sm=1
print(b)
5、破译密码
题目内容:
A国情报局抓获敌国间谍一名,从间谍身上搜出了若干密电,在严刑逼供之下,间谍说出了密电加密方法:将明文电报(仅由大写字母构成)中的所有字母均替换为字母表中向后看的第n个字母,如果超过Z,则从A继续数,这样就得到了密文,比如ATTACK,向后看第2个字母,就加密为CVVCFM。
可还没等到间谍说出加密用的密钥(数字n),就被卧底开枪打死,间谍临死前在地板上画了BYE三个字母。
情报局长看着一条条密电发了愁,但机智的你已经发现,原来间谍在告诉我们,所有密电的明文都以BYE结尾!
请编写程序破译这些密电吧!
输入格式:共一行字符串,全部由大写字母构成的密文。
输出格式:共一行字符串,破译后的明文。
a=input()
s=''
n=ord(a[-1])-69 if ord(a[-1])>69 else ord(a[-1])-65+90-69+1
for i in a:
if ord(i)-n<65:
s+=chr(ord(i)-n+26)
else:s+=chr(ord(i)-n)
print(s)