2024.3.18
L1-002 打印沙漏
num, ch = input().split(' ')
# 字符的数量强制转换为整型
num = int(num)
# 沙漏任意一边的行数
row = 1
# 确定沙漏任意一边的行数
while (2 * row ** 2 - 1) <= num:
row = row + 1
row = row - 1
long = 2 * row - 1
# 打印沙漏的中部和上部
for i in range(row, 0, -1):
print((ch * (2 * i - 1)).rjust(long))
long=long-1
long=long+1
# 打印沙漏的下部
for j in range(2, row + 1):
long=long+1
print((ch * (2 * j - 1)).rjust(long))
# 输出剩余的符号数
print(num - 2 * row ** 2 + 1)
L1-003 个位数统计
d = [0] * 10
cnt = 0
n = int(input())
while n > 0:
cnt = n % 10
d[cnt] += 1
n = n // 10
for i in range(10):
if d[i] == 0:
continue
else:
print("%d:%d"%(i, d[i]))
2024.3.19
L1-005 考试座位号
if __name__ == '__main__':
n = int(input())
a = [[0] * 3 for i in range(n)]
for i in range(n):
a[i] = input().split()
m = input()
nm = input().split()
for i in nm:
for j in range(n):
if i == a[j][1]:
print("{} {}".format(a[j][0], a[j][2]))
else:
continue
L1-006 连续因子
感觉按思路来说没问题
①从2开始枚举因子
②找到最长的连续因子序列并记录到列表中,记录并更新最长连续因子序列长度
③迭代完成后,输出就好了
问题:
①错误不知道哪组数据会错(没考虑到连续因子相乘之后是否还是N的因子)
②数据大了会爆栈
# 开发人:陶倩
# 开发时间: 2024/3/19 10:32
def check(n):
num = []
ans = []
long = 0
for i in range(2, n):
if n % i == 0:
num.append(i)
else:
if len(num) > long:
long = len(num)
ans = num.copy()
num = []
if len(num) > long:
long = len(num)
ans = num.copy()
print(long)
print(ans[0], end='')
ans.pop(0)
for i in ans:
print('*{}'.format(i), end='')
if __name__ == '__main__':
n = int(input())
check(n)
L1-007 念数字
d = {
'-': 'fu',
'0': 'ling',
'1': 'yi',
'2': 'er',
'3': 'san',
'4': 'si',
'5': 'wu',
'6': 'liu',
'7': 'qi',
'8': 'ba',
'9': 'jiu',
}
s = list(input())
for i in range(len(s) - 1):
print(d[s[i]] + ' ', end='')
print(d[s[len(s) - 1]], end='')
L1-008 求整数段和
天梯赛的输出格式怎么这么严.......
if __name__ == '__main__':
n, m = map(int, input().split())
a = []
num = 0
cnt = 0
for i in range(n, m + 1):
a.append(i)
num += i
for i in range(n, m + 1):
if cnt % 5 == 0 and cnt != 0:
print()
print('{: >5}'.format(i), end='')
cnt += 1
print("\nSum = {}".format(num))
2024.3.20
L1-009 N个数求和
# 开发人:Agu
# 开发时间: 2023/3/25 15:45
import math
suma = 0
numb = 1
n = int(input())
str1 = input().split()
for i in str1:
a, b = map(int, i.split('/'))
#print(a, b)
suma *= b
suma = suma + a * numb
numb *= b
m = math.gcd(suma, numb)
suma = suma // m
numb = numb // m
if suma and suma // numb == 0:
print("{}/{}".format(suma, numb))
elif suma % numb == 0:
print("{}".format(suma//numb))
else:
print("{} {}/{}".format(suma // numb, suma % numb, numb))
L1-010 比较大小
# 开发人:Agu
# 开发时间: 2024/3/20 19:38
a = list(map(int, input().split()))
a.sort()
print("{}->{}->{}".format(a[0], a[1], a[2]))
L1-011 A-B
s1 = input()
s2 = input()
for i in s2:
s1 = s1.replace(i,'')
print(s1)
L1-012 计算指数
n = int(input())
cnt = 1
for i in range(n):
cnt *= 2
print("2^{} = {}".format(n, cnt))
L1-013 计算阶乘和
# 开发人:Agu
# 开发时间: 2024/3/20 21:00
n = int(input())
a = []
cnt = 1
for i in range(2, n+2):
for j in range(1, i):
cnt *= j
a.append(cnt)
cnt = 1
print(sum(a))
L1-015 跟奥巴马一起画方块
# 开发人:Agu
# 开发时间: 2024/3/20 21:13
def pd(n):
n = ((n * 10) // 2) % 10
if n >= 5:
return True
else:
return False
if __name__ =="__main__":
n = 0
nm = list(input().split())
nm[0] = int(nm[0])
if pd(nm[0]):
n = nm[0] // 2 + 1
else:
n = nm[0] // 2
for i in range(n):
for j in range(nm[0]):
print(nm[1], end='')
print()
2024.3.21
L1-016 查验身份证
# 开发人:Agu
# 开发时间: 2024/3/21 17:32
d = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
a = [[0] * 18 for i in range(105)]
b = []
cnt = 0
def change(a):
if a == 0:
a = '1'
elif a == 1:
a = '0'
elif a == 2:
a = 'X'
elif a == 3:
a = '9'
elif a == 4:
a = '8'
elif a == 5:
a = '7'
elif a == 6:
a = '6'
elif a == 7:
a = '5'
elif a == 8:
a = '4'
elif a == 9:
a = '3'
elif a == 10:
a = '2'
return a
if __name__ == '__main__':
n = int(input())
for i in range(n):
a[i] = input()
#print(a)
num = 0
for j in range(17):
if a[i][j] == 'X':
b.append(a[i])
num = -1
break
else:
num += d[j] * int(a[i][j])
#print(num)
if num != -1:
cnt = num % 11
#print(cnt)
cnt = change(cnt)
#print(cnt)
if cnt != a[i][17]:
b.append(a[i])
if len(b) != 0:
for i in b:
print(i)
else:
print("All passed")
2024.3.22
L1-017 到底有多二
# 开发人:Agu
# 开发时间: 2024/3/22 16:07
n = input()
cnt = 0
num = 0
m = len(n)
#print(m)
for i in range(len(n)):
if n[i] == '2':
cnt += 1
#print(cnt)
num = float(cnt / m)
if n[0] == '-':
num = 0
num = float(cnt / (m - 1))
#print(num)
num = num * 1.5
#print(num)
if int(n[m - 1]) % 2 == 0:
num = num * 2
#print(num)
num = num * 100
#print(cnt)
print('%.2f%%' % num)
L1-018 大笨钟
# 开发人:Agu
# 开发时间: 2024/3/22 16:33
nm = list(input().split(":"))
if int(nm[0]) <= 12:
print("Only {}:{}. Too early to Dang.".format(nm[0], nm[1]))
else:
if int(nm[1]) > 0:
nm[0] = int(nm[0]) + 1
for i in range(int(nm[0]) - 12):
print("Dang", end='')
2024.3.23
L1-023 输出GPLT
# 开发人:Agu
# 开发时间: 2024/3/23 14:07
nm = input()
a = 0
b = 0
c = 0
d = 0
for i in nm:
if i == 'G' or i == 'g':
a += 1
elif i == 'P' or i == 'p':
b += 1
elif i == 'L' or i == 'l':
c += 1
elif i == 'T' or i == 't':
d += 1
while a > 0 or b > 0 or c > 0 or d > 0:
if a > 0:
print('G', end='')
a -= 1
if b > 0:
print('P', end='')
b -= 1
if c > 0:
print('L', end='')
c -= 1
if d > 0:
print('T', end='')
d -= 1
L1-028 判断素数
# 开发人:陶倩
# 开发时间: 2024/3/23 14:52
import math
def pd(x):
if x == 1:
return False
if x == 2:
return True
for i in range(2, int(math.sqrt(x))):
if x % i == 0:
return False
return True
if __name__ == "__main__":
n = int(input())
for i in range(n):
m = int(input())
if pd(m):
print('Yes')
else:
print('No')
2024.3.28
L1-025 正整数A+B
# 开发人:陶倩
# 开发时间: 2024/3/28 14:43
n = ''
m = ''
a = input()
count = 0
count1 = 0
count2 = 0
for i in range(len(a)):
if a[i] == ' ':
count0 = i + 1
#print(count0)
break
n = n + a[i]
#print(n)
for i in range(count0, len(a)):
m = m + a[i]
#print(m)
for i in n:
if i < '0' or i > '9':
count1 = 1
break
for i in m:
if i < '0' or i > '9':
count2 = 1
break
if count2 == 1 and count1 == 1:
print("? + ? = ?")
if count2 == 1 and count1 == 0:
print("{} + ? = ?".format(n))
if count2 == 0 and count1 == 1:
print("? + {} = ?".format(m))
if count2 == 0 and count1 == 0:
num = int(n) + int(m)
print("{} + {} = {}".format(n, m, num))
L1-032 Left-pad
# 开发人:陶倩
# 开发时间: 2024/3/28 16:28
n, m = input().split()
n = int(n)
nm = input()
cnt = len(nm)
#print(cnt)
num = n - cnt
#print(num)
if num >= 0:
print(m * num + nm)
else:
num = abs(num)
for i in range(num, cnt):
print(nm[i], end='')
L1-034 点赞
num = int(input()) # 输入数字的个数
dict_feature = {} # 创建一个空字典用于存储数字和其出现次数
for _ in range(num):
data = input().split()[1:] # 输入数字并将其转换为列表
for j in data:
dict_feature[int(j)] = dict_feature.get(int(j), 0) + 1 # 使用字典的get方法来计数
# 将字典中的键值对按照值的降序和键的降序进行排序
list_dict = sorted(dict_feature.items(), key=lambda x: (-x[1], -x[0]))
# 打印排序后的字典的第一个元素,即出现次数最多的数字及其出现次数
most_common_feature, count = list_dict[0]
print(f'{most_common_feature} {count}')
2024.4.15
L1-035 情人节
# 开发人:Agu
# 开发时间: 2024/4/15 14:44
arr = [0]
c1 = 0
c2 = 0
while arr[-1] != '.':
arr.append(input())
# print(arr)
if len(arr) > 3:
if arr[2] != ' ':
c1 = 1
if len(arr) > 15:
if arr[14] != ' ':
c2 = 1
if c1 == 1 and c2 == 1:
print("{} and {} are inviting you to dinner...".format(arr[2], arr[14]))
if c1 == 1 and c2 == 0:
print("{} is the only one for you...".format(arr[2]))
if c1 == 0:
print("Momo... No one is for you ...")
L1-030 一帮一
# 开发人:Agu
# 开发时间: 2024/4/15 15:21
c = int(input())
mid = int(c / 2)
a = []
cnt = []
for i in range(c):
n, m = input().split()
a.append(m)
n = int(n)
cnt.append(n)
# print(a)
# print(cnt)
for i in range(mid):
# print(a[i])
for j in range(c - i - 1, mid - 1, -1):
# print(a[j])
if cnt[i] != cnt[j]:
print("{} {}".format(a[i], a[j]))
a.pop(j)
cnt.pop(j)
break
L1-039 古风排版
# 开发人:Agu
# 开发时间: 2024/4/15 16:47
import math
n = int(input())
x = 0
string = input()
m = math.ceil(len(string) / n)
a = [[0] * m for i in range(n)]
for i in range(m-1, -1, -1):
for j in range(0, n):
if x < len(string):
a[j][i] = string[x]
x += 1
for i in range(n):
for j in range(m):
if a[i][j] == 0:
a[i][j] = ' '
print(a[i][j], end='')
print()
L1-043 阅览室
import sys
def toMin(x): #时间转换函数
hour_0 = int(x[0:2])
min_0 = int(x[3:5])
out_min = hour_0*60+min_0
return out_min
def rounding(x): #四舍五入函数
x = str(x)
decimal = int(x[x.index('.')+1])
if decimal >= 5:
return int(x[0:x.index('.')])+1
else :
return int(x[0:x.index('.')])
in_1 = int(sys.stdin.readline()) #标准输入一行
sum_0,sum_num,sum_min,dict_1 = 0,0,0,{}
while True:
in_2,in_3,in_4 = sys.stdin.readline().split() #标准输入一行并切分
if in_2 == '0':
try : #统计一天时间的借书结果
print("{} {}".format(sum_num,rounding(sum_min/sum_num)))
except :
print("0 0")
sum_0 += 1
dict_1 = {}
sum_num = 0
sum_min = 0
else :
if in_2 in dict_1:
if dict_1[in_2][0] == 'S' and in_3 == 'E': #存入还书记录
sum_min = sum_min + (toMin(in_4)-toMin(dict_1[in_2][1]))
dict_1.pop(in_2)
sum_num += 1
else : #存入借书记录
dict_1[in_2] = [in_3,in_4]
else : #存入借书记录
dict_1[in_2] = [in_3,in_4]
if sum_0 == in_1:
break
2024.4.17
L3-032 关于深度优先搜索和逆序对的题应该不会很难吧这件事
2024.4.18
L2-006 树的遍历
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
n=int(input())
host=list(map(int,input().split()))
inorder=list(map(int,input().split()))
def buildTree(inorder, postorder) -> TreeNode:
def helper(in_left, in_right):
# 如果这里没有节点构造二叉树了,就结束
if in_left > in_right:
return None
# 选择 post_idx 位置的元素作为当前子树根节点
val = postorder.pop()
root = TreeNode(val)
# 根据 root 所在位置分成左右两棵子树
index = idx_map[val]
# 构造右子树
root.right = helper(index + 1, in_right)
# 构造左子树
root.left = helper(in_left, index - 1)
return root
idx_map = {val:idx for idx, val in enumerate(inorder)}
return helper(0, len(inorder) - 1)
p=buildTree(inorder,host)
q=[p]
res=[]
while(len(q)!=0):
m=q.pop(0)
if m!=None:
res.append(m.val)
if m.left!=None:
q.append(m.left)
if m.right!=None:
q.append(m.right)
print(*res)