部分习题有解析,可以点链接或者去我博客蓝桥杯一栏搜索。欢迎点赞评论指教~
while True:
try:
n = int(input())
s = sorted(list(map(int, input().split())))
for i in s:
print(i,' ',end = '')
except:
break
while True:
try:
n = int(input())
for i in range(n):
s = int(input(),16) #十六进制先转为十进制
result = oct(s) #十进制转为八进制
print(result[2:])
except:
break
十六进制转十进制题目解析
while True:
try:
s = str(input())[::-1]
para = {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,
'9':9,'A':10,'B':11,'C':12,'D':13,'E':14,'F':15}
result = para[s[0]]
for i in range(1, s.__len__()):
temp = para[s[i]]*16**i
result += temp
print(result)
except:
break
while True:
try:
n = int(input())
print(hex(n)[2:].upper())
break
except:
break
特殊回文数题目解析
while True:
try:
n = int(input())
for num in range(10000, 1000000):
temp = str(num)
if temp[0:] == temp[::-1]: #判断是否是回文数
if sum(list(map(int, temp))) == n:
print(num)
break
except:
break
while True:
try:
n = int(input())
for num in range(10000, 1000000):
temp = str(num)
if temp[0:] == temp[::-1]: #判断是否是回文数
if sum(list(map(int, temp))) == n:
print(num)
break
except:
break
while True:
try:
for num in range(100, 1000):
bai = (num // 100) * (num // 100) * (num // 100)
shi = (num % 100 // 10) * (num % 100 // 10) * (num % 100 // 10)
ge = (num % 100 % 10) * (num % 100 % 10) * (num % 100 % 10)
if bai + shi + ge == num:
print(num)
break
except:
break
while True:
try:
n = int(input())
s = [[0 for i in range(n)] for j in range(n)]
for num in range(n):
s[num][0] = 1
for i in range(n):
for j in range(i+1):
s[i][j] = s[i-1][j-1] + s[i-1][j]
for i in range(n):
for j in range(n):
if s[i][j] != 0:
print(s[i][j],' ', end = '')
print('')
except:
break
while True:
try:
n = int(input())
s = list(map(int, input().split()))
n1 = int(input())
if n1 in s:
print(int(s.index(n1)) + 1)
else:
print(-1)
except:
break
while True:
try:
n = int(input())
s = list(map(int, input().split()))
print(max(s))
print(min(s))
print(sum(s))
except:
break
字母图形题目解析
while True:
try:
n = list(map(int, input().split()))
s = [['0' for p in range(max(n)) ]for q in range(max(n))]
for i in range(n[0]):
temp1,temp2 = ord('A'), ord('A')
for j in range(i, n[1]):
s[i][j] = chr(temp1)
temp1 += 1
for k in range(i-1, -1, -1):
temp2 += 1
s[i][k] = chr(temp2)
for x in range(n[0]):
for y in range(n[1]):
print(s[x][y],end = '')
print('')
except:
break
while True:
try:
for i in range(32):
print(str(bin(i))[2:].rjust(5,'0'))
break
except:
break
while True:
try:
n = int(input())
if n % 4 == 0 and n % 100 != 0:
print("yes")
elif n % 400 == 0:
print("yes")
else:
print("no")
except:
break
while True:
try:
n = int(input())
for i in range(1,n):
n = n * i
print(n)
except:
break
while True:
try:
a = input()
b = input()
A = a.rjust(max(len(a),len(b)), '0')
B = b.rjust(max(len(a),len(b)), '0')
c = []
temp = 0
for i in range(len(A)-1, -1, -1):
c.append((int(A[i]) + int(B[i]) + temp) % 10)
if (int(A[i]) + int(B[i])+temp) >= 10:
temp = (int(A[i]) + int(B[i]) + temp) // 10
else:
temp = 0
if temp == 0:
pass
else:
c.append(temp)
for x in c[::-1]:
print(x,end = '')
except:
break
while True:
try:
n = int(input())
result = 0
s = list(map(int,input().split()))
for i in range(n-1):
s.sort(reverse=True)
s1 = s.pop()
s2 = s.pop()
s.append(s1+s2)
result += s1+s2
print(result)
except:
break
2n皇后问题题目解析
while True:
try:
#我们先白皇后,再黑皇后
n = int(input()) #n是一开始的黑白皇后个数
s = [] #存放原始的0,1位置
result = []
temp_W = [None for x in range(n)] #临时放一下白皇后
temp_B = [None for x in range(n)] #临时放一下黑皇后
for i in range(n):
s.append(input().split()) #输入0,1位置
def valid_W(temp_W,row): #判断当前的位置上放白皇后是否合法
if s[row][temp_W[row]] == '1': #判断这个位置能否放置皇后
for i in range(row):
#下面这个判断条件是:判断对角线,判断是否是白皇后自己的列
if abs(temp_W[i] - temp_W[row]) == abs(i-row) or temp_W[i] == temp_W[row]:
return False
return True
def valid_B(temp_B,row,temp_W): #判断当前的位置放黑皇后是否合法
if s[row][temp_B[row]] == '1' and temp_B[row] != temp_W[row]: #判断这个位置能否放置皇后
for i in range(row):
#判断是否对角线,是否是自己的列,判断这个位置有没有先放上白皇后
if abs(temp_B[i] - temp_B[row]) == abs(i-row) or temp_B[i] == temp_B[row]:
return False
return True
def dfs_W(temp_W,row): #temp记录当前所有合法的皇后的位置,row是继续往下一行里面放皇后
if row == n: #当前进行到n,表示找到了白皇后的一种排列方式,跳出递归
dfs_B(temp_B,0) #白皇后排好之后跳到排列黑皇后
else:
for col in range(n): #col是列,就是要遍历这一行的所有列,看在某个位置上是否合法
temp_W[row] = col
if valid_W(temp_W,row):
dfs_W(temp_W,row+1)
def dfs_B(temp_B, row): #temp记录当前所有合法的皇后的位置,row是继续往下一行里面放皇后
if row == n: #当前进行到n,表示找到了n皇后的一种排列方式,跳出递归
result.append(temp_B[:])#将找到的黑皇后排列方式存储到result里面
return
else:
for col in range(n): #col是列,就是要遍历这一行的所有列,看在某个位置上是否合法
temp_B[row] = col
if valid_B(temp_B,row,temp_W):
dfs_B(temp_B,row+1)
dfs_W(temp_W,0)
print(len(result))
except:
break
while True:
try:
dic = {0:'zero', 1: 'one', 2:'two', 3:'three', 4:'four', 5:'five', 6:'six', 7:'seven', 8:'eight', 9:'nine', 10:'ten',\
11:'eleven', 12:'twelve', 13:'thirteen', 14:'fourteen', 15:'fifteen', 16:'sixteen', 17:'seventeen', 18:'eighteen',\
19:'nineteen', 20:'twenty',30:'thirty',40:'forty',50:'fifty'}
s = list(map(int, input().split()))
res = ''
if s[0] > 20:
res += dic[20] + ' '
res += dic[s[0]%10] + ' '
else:
res += dic[s[0]]+' '
if 10 <= s[1] <= 20:
res += dic[s[1]]
else:
if s[1] == 0:
res += "o'clock"
elif s[1]//10 == 0:
res += dic[s[1]%10]
elif s[1]//10 == 2:
res += dic[20] + ' ' + dic[s[1]%10]
elif s[1]//10 == 3:
res += dic[30] + ' ' + dic[s[1]%10]
elif s[1]//10 == 4:
res += dic[40] + ' ' + dic[s[1]%10]
elif s[1]//10 == 5:
res += dic[50] + ' ' + dic[s[1]%10]
print(res)
except:
break
回形取数题目解析
import math
while True:
try:
m, n = map(int,input().split())
res = []
for i in range(0,m):
res.append(input().split())
N = math.ceil(min(m,n)/2)
result = []
num = 0
for loop in range(N):
for x in range(loop,m-loop):
result.append(res[x][loop])
for y in range(loop+1,n-loop):
result.append(res[m-1-loop][y])
if n-1 > 2*loop:
for p in range(m-loop-2,loop-1,-1):
result.append(res[p][n-1-loop])
if m-1 > 2*loop:
for q in range(n-loop-2,loop,-1):
result.append(res[loop][q])
for x in result:
print(x,'',end='')
except:
break
龟兔赛跑预测题目解析
import math
while True:
try:
v1,v2,t,s,l = map(int, input().split())
x1,x2=0,0 #x1,x2是记录兔子和乌龟走过的路程
time = 0
for i in range(math.ceil(l/v2)):
x1 += v1
x2 += v2
time += 1
if x1 >= l and x2 < x1:
print('R')
print(time)
break
elif x1 < x2 and x2 >= l:
print('T')
print(time)
break
elif x1 == x2 >= l:
print('D')
print(time)
break
if (x1-x2) >= t:
x2 += v2 * s
time += s
if x1 >= l and x2 < x1:
print('R')
print(time)
break
elif x1 < x2 and x2 >= l:
print('T')
print(math.ceil(l/v2))
break
elif x1 == x2 and x2 >= l:
print('D')
print(time)
break
except:
break
芯片测试题目解析
while True:
try:
n = int(input())
s = []
for i in range(n):
s.append(input().split())
for i in range(0,n):
flag = 0
for j in range(n):
if s[j][i] == '1':
flag += 1
if flag >= n/2:
print(i+1,'',end='')
except:
break
while True:
try:
def Rec_fj(n):
if n == 1:
return 'A'
else:
return Rec_fj(n-1) + chr(ord('A')+n-1) +Rec_fj(n-1)
n = int(input())
print(Rec_fj(n))
except:
break
while True:
try:
def Rec_An(s, n):
if n == 1:
return 'sin(1)'
elif (s == n - 1) and ((n - 1) % 2 == 0):
return 'sin(' + str(n - 1) + '+' + 'sin' + str(n) + ')'
elif (s == n - 1) and ((n - 1) % 2 != 0):
return 'sin(' + str(n - 1) + '-' + 'sin' + str(n) + ')'
elif s % 2 != 0:
return 'sin(' + str(s) + '-' + Rec_An(s + 1, n) + ')'
elif s % 2 == 0:
return 'sin(' + str(s) + '+' + Rec_An(s + 1, n) + ')'
def Rec_Sn(s, n):
if s == n:
return Rec_An(1,1) + '+' + str(n)
else:
return '(' + Rec_Sn(s + 1, n) + ')' + Rec_An(1,n+1-s) + '+' + str(s)
n = int(input())
print(Rec_Sn(1,n))
except:
break
数的读法题目解析
while True:
try:
s = {0: 'ling', 1: 'yi', 2: 'er', 3: 'san', 4: 'si', 5: 'wu', 6: 'liu', 7: 'qi', 8: 'ba', 9: 'jiu'}
res = []
long_data = input()
def read_four_num(n): #用这个函数读四位数
temp = list(map(int, n))
if temp[0] != 0: #千位如果是零不读
res.append(s[temp[0]])
res.append('qian')
else:
pass
if temp[1] != 0: #百位不为零直接读出来
res.append(s[temp[1]])
res.append('bai')
elif (temp[0] == 0 and temp[1] == 0) or (temp[1] == 0 and temp[2] == 0 and temp[3] == 0): #千位,百位都是零的话不读
pass
else:
res.append(s[temp[1]]) #千位不是零,百位是零读出来
if temp[2] != 0 and temp[2] != 1: #十位不是零和一
res.append(s[temp[2]])
res.append('shi')
elif temp[2] == 1 and temp[0] == 0 and temp[1] == 0:
res.append('shi')
elif (temp[1] == 0 and temp[2] == 0) or (temp[2] == 0 and temp[3] == 0): #如果百位是零,十位也是零,连零读一个
#如果百位个位都是零,不读
pass
else:
res.append(s[temp[2]])
if temp[3] != 0:
res.append(s[temp[3]])
else:
pass
return res
if 0 < len(long_data) <= 4:
ans = read_four_num(long_data.rjust(4,'0'))
elif 4 < len(long_data) <= 8:
new = long_data.rjust(8,'0')
read_four_num(new[:4])
res.append('wan')
if new[4:] != '0000' and new[4:][0] == '0':
res.append('ling')
ans = read_four_num(new[4:])
elif 8 < len(long_data) <= 10:
new = long_data.rjust(12,'0')
read_four_num(new[:4])
res.append('yi')
if new[4:8] != '0000':
read_four_num(new[4:8])
res.append('wan')
elif new[4:12] == '00000000':
pass
else:
res.append('ling')
ans = read_four_num(new[8:12])
for x in ans:
print(x,'',end= '')
except:
break
完美的代价题目解析
while True:
try:
def huiwen(n, s): # 判断能不能组成回文数
temp = set()
if n % 2 == 0:
for i in range(26):
if s.count(chr(ord('a') + i)) % 2 != 0: # 如果某个字符不是偶数个
print('Impossible')
return False
else:
return True
else:
for j in range(26):
if s.count(chr(ord('a') + j)) % 2 != 0:
temp.add(chr(ord('a') + j)) # 把个数是奇数个的字符放进temp
if len(temp) > 1:
print('Impossible')
return False
else:
return True
def step(n, s, s1, res):
for i in range(n // 2):
if s[i:].count(s[i]) != 1:
temp = s1[:n - i].index(s[i]) # 是要移动的步数
s1.pop(temp)
res += temp
s = s1[::-1]
else:
res += n // 2 - i
s[i] = None
s1 = s[::-1]
return res
n = int(input())
s = list(input())
s1 = s[::-1]
res = 0
if huiwen(n, s):
print(step(n, s, s1, res))
except:
break
矩形面积交题目解析
while True:
try:
s1 = list(map(float, input().split()))
s2 = list(map(float, input().split()))
if s1[0] > s1[2]:
s1[0],s1[2] = s1[2],s1[0]
if s1[1] > s1[3]:
s1[1], s1[3] = s1[3], s1[1]
if s2[0] > s2[2]:
s2[0],s2[2] = s2[2],s2[0]
if s2[1] > s2[3]:
s2[1],s2[3] = s2[3],s2[1]
temp_x1 = max(s1[0],s2[0])
temp_x2 = min(s1[2],s2[2])
temp_y1 = max(s1[1],s2[1])
temp_y2 = min(s1[3],s2[3])
if temp_x2-temp_x1<0 or temp_y2-temp_y1<0:
res = 0
else:
res = (temp_y2-temp_y1)*(temp_x2-temp_x1)
print("{:.2f}".format(res))
except:
break
矩阵乘法题目解析
while True:
try:
def matrix_mul(matrix1,matrix, n):
c = [[0 for m1 in range(n)]for m in range(n)]
for i in range(n):
for j in range(n):
for k in range(n):
c[i][j] += matrix1[i][k] * matrix[k][j]
return c
n = list(map(int, input().split()))
s = []
result = s
for j in range(n[0]):
s.append(list(map(int, input().split())))
if n[1] == 0:
for i in range(0, n[0]):
for j in range(0, n[0]):
if i == j:
result[i][j] = 1
else:
result[i][j] = 0
else:
for k in range(n[1]-1):
result = matrix_mul(result,s,n[0])
for i in range(0, result.__len__()) :
for j in range(0, result[i].__len__()) :
print(result[i][j],'', end='')
print('')
except:
break
分解质因数题目解析
while True:
try:
def zhishufenjie(res, n, result): #res是存储分解质因数的式子,n是当前被分解的数
for i in range(2, n + 1):
if n % i == 0: #如果n能整除i
res += str(i)
n = n // i
if n == 1:
return res
elif n in result.keys(): #走捷径,假如我们判断36,判断一次到18了,18之前做过了,直接拿过来
res += '*'
res += result[n]
return res
else:
res += '*'
return zhishufenjie(res, n, result)
min_num, max_num = map(int, input().split())
result = {} #result是存储值与其分解质因数的对应关系
for num in range(min_num,max_num + 1):
res = ''
result[num] = zhishufenjie(res,num,result)
for k,v in result.items():
s = str(k)+'='+str(v)
print(s)
except:
break
while True:
try:
s1 = input()
s2 = input()
if len(s1) != len(s2):
print(1)
elif s1 == s2:
print(2)
else:
for i in range(s1.__len__()):
if s1[i] == s2[i] or ord(s1[i]) + 32 == ord(s2[i]) or ord(s1[i]) - 32 == ord(s2[i]):
flag = 0
else:
flag = 1
print(4)
break
if flag == 0:
print(3)
except:
break
时间转换题目解析
while True:
try:
t = int(input())
h = t // 3600
m = t%3600 // 60
s = t % 3600 % 60
print(str(h)+':'+str(m)+':'+str(s))
except:
break
对你有帮助的话点个赞~~