1.乌鸦喝水
代码部分
# 计算机挑战赛--乌鸦喝水
x = int(input('请输入底边的边长:\n'))
y = int(input('请输入容器内水面距离瓶子口的距离:\n'))
z = 0
while 1:
if x*x*y - 8*z < 2*x*x:
print(f'需要投放{z}个石子乌鸦才能喝到水')
break
else:
z = z + 1
2.竞赛学科分配
代码部分
# 计算机挑战赛--学科竞赛
people = int(input('输入想要参赛的人数:\n'))
subject = input('想要参加选拔的科目:\n')
list = [];total = 0;marks = [];
for i in range(people):
id,g1,g2,g3,g4,g5,g6 = map(int,input().split())
list.extend([[id,g1,g2,g3,g4,g5,g6]])
if subject == 'I':
for i in range(people):
List = list[i]
x = List[2]
y = List[3]
new_total = x + y
marks.append(new_total)
count = marks.count(max(marks))
if count == 1:
List1 = list[marks.index(max(marks))]
print(List1[0])
else:
List3 = []
position = [index for index,value in enumerate(marks) if value == max(marks)]
print(position)
for i in position:
List2 = list[i]
List3.append(List2[0])
List3.sort()
print(List3)
for i in List3:
print(i)
if subject == 'B':
for i in range(people):
List = list[i]
x = List[2]
y = List[4]
new_total = x + y
marks.append(new_total)
count = marks.count(max(marks))
if count == 1:
List1 = list[marks.index(max(marks))]
print(List1[0])
else:
List3 = []
position = [index for index,value in enumerate(marks) if value == max(marks)]
for i in position:
List2 = list[i]
List3.append(List2[0])
List3.sort()
for i in List3:
print(i)
if subject == 'H':
for i in range(people):
List = list[i]
x = List[5]
y = List[6]
new_total = x + y
marks.append(new_total)
count = marks.count(max(marks))
if count == 1:
List1 = list[marks.index(max(marks))]
print(List1[0])
else:
List3 = []
position = [index for index,value in enumerate(marks) if value == max(marks)]
for i in position:
List2 = list[i]
List3.append(List2[0])
List3.sort()
for i in List3:
print(i)
3.机器人集合位置
代码部分
# 计算机挑战赛--集合位置
list = [];min_power = float('inf');v = 0;count = 1;sum = 0
#给出空列表,用于存储坐标值. 将初始最小能源消耗赋为无穷大,计数器与sum的值赋为0方便下方计算.
K = int(input('输入机器人的总数K(0<K<=100):\n'))
if K <= 0 or K > 100:
print('错误!请确保K在正确范围之内!')
else:
for i in range(K):
x,y = map(int,input(f'输入第{i+1}个坐标值(x,y)(x<=10,y<=1000):\n').split())
if x < 0 or x > 10 or y < 0 or y > 1000:
print('错误!请确保(x,y)在正确范围之内!')
break
else:
list.append([x,y])
#将用户输入的坐标值以子列表[]的形式添加到list列表中,形成一个二维列表,方便取用
for i in list:
list.remove(i)
#取出list列表中每一个坐标值,并暂时将其从列表中去除
for o in range(K-1):
a = abs(list[o][0] - i[0])
b = abs(list[o][1] - i[1])
sum = a + b + sum
#将去除后的list列表中的各个坐标依次拿出,并与取出的坐标作差,计算能量值
if sum <= min_power:
min_power = sum;sum = 0
else:
sum = 0
#如果得到的最小能量sum值小于min_power,将sum赋值给min_power,并将sum重新赋为0
list.insert(v,i)
v = v + 1
#将删掉的坐标按照原位返回到list列表中
if min_power != float('inf'):
print(min_power)
else:
print('出现错误!请检查输入')
4.产品质量抽查
代码部分
# 计算机挑战赛--产品质量抽查
N,M,K = map(int,input().split());list = [];v = 0;sum = 0;count = 0;
for i in range(N):
list.append(input())
for i in list:
list.remove(i)
for o in i:
if o == '1':
count = count + 1
for m in list:
total = count
for n in m:
if n == '1':
total = total + 1
if total >= sum:
sum = total
count = 0
list.insert(v,i)
v = v + 1
print(sum)