做网站设计的公司,网站建设公司怎样选,服装设计网页制作素材,wordpress如何登录后台1.某机械公司生产两种产品。A的单件利润分别是100元#xff0c;B的单件利润是150元。 每种产品由三种材料构成#xff0c;现给出每种材料的库存#xff08;库存小于100000#xff09;#xff0c;求利润最大的生产方案。输入说明#xff1a;第一行给出生产每件A产品所需要…1.某机械公司生产两种产品。A的单件利润分别是100元B的单件利润是150元。 每种产品由三种材料构成现给出每种材料的库存库存小于100000求利润最大的生产方案。输入说明第一行给出生产每件A产品所需要的三种材料数量第二行给出生产每件B产品所需要的三种材料数量第三行给出三种材料的库存数量。输出说明输出利润最大生产方案所对应的每种产品的生产数量按照产品A、产品B的顺序和利润最大值每个数值间用空格隔开。输入样例3125223046输出样例21350。
# 导入线性规划求解库
from scipy.optimize import linprog
# 输入数据
# 每件产品A所需的三种材料数量
a_materials [3, 1, 2]
# 每件产品B所需的三种材料数量
b_materials [5, 2, 3]
# 三种材料的库存数量
material_stock [30, 4, 6]
# 产品A和B的利润
profit [100, 150]
# 将目标函数的系数取负因为 linprog 默认求解最小值问题
c [-profit[0], -profit[1]]
# 不等式约束矩阵表示材料的使用限制
A [[a_materials[0], b_materials[0]], # 材料一的约束[a_materials[1], b_materials[1]], # 材料二的约束[a_materials[2], b_materials[2]] # 材料三的约束
]
# 不等式约束向量
b material_stock
# 变量的取值范围x 0
x_bounds (0, None)
# 求解线性规划问题
res linprog(c, A_ubA, b_ubb, bounds[x_bounds, x_bounds], methodhighs)
# 输出结果
if res.success:num_A, num_B res.xmax_profit -res.funprint(f最优生产方案生产产品A的数量为 {int(num_A)}生产产品B的数量为 {int(num_B)})print(f最大利润为{max_profit})
else:
print(未找到最优解)
1输入数据定义每个产品A和B所需的三种材料数量、材料的库存数量以及产品A和B的利润。
2目标函数linprog默认求解最小化问题将利润系数取反求最大化利润。
3约束条件每种材料的使用量不能超过库存量。
4求解问题使用linprog求解最优生产方案。
5输出结果打印最优生产方案和最大利润。
2.输入一个包含N个整数的数组从中找到连续M个数之积最小的数字组合。输入说明第一行是两个正整数NN200 和MM10第二行是N个整数每个数字Ni都是整数且INil1000中间用空格分开。输出说明最小的M个连续数字积及第一个数在数组中的位置初始位置按1进行计算。输入样例10412345678910输出样例241。
# 输入处理
n, m map(int, input().split())
array list(map(int, input().split()))# 初始化最小乘积和对应的起始位置
min_product float(inf)
min_index -1# 遍历数组找出连续 m 个数的最小乘积
for i in range(n - m 1):product 1for j in range(m):product * array[i j]if product min_product:min_product productmin_index i 1 # 转换为从 1 开始计数# 输出结果
print(min_product, min_index)
1输入处理首行输入包含两个正整数 N 和 M表示数组长度和需要寻找的连续元素个数第二行输入是包含 N 个整数的数组。
2最小乘积计算通过遍历数组找出所有长度为 M 的连续子数组并计算它们的乘积更新最小乘积及其起始位置。
3输出结果输出最小乘积及其起始位置位置从 1 开始计数。
3.输入一个包含N个整数的数组从中找到连续M个数之和最大的数字组合。输入说明第一行是两个正整数NN200和MM20第二行是N个整数每个数字Ni都是整数且Nil100000中间用空格分开输出说明最大的M个连续数字和及第一个数在数组中的位置初始位置按1进行计算。输入样例10412345678910输出样例347。
# 输入处理
n, m map(int, input().split())
array list(map(int, input().split()))# 初始化最大和及其对应的起始位置
max_sum float(-inf)
max_index -1# 遍历数组找出连续 m 个数的最大和
for i in range(n - m 1):current_sum sum(array[i:i m])if current_sum max_sum:max_sum current_summax_index i 1 # 转换为从 1 开始计数# 输出结果
print(max_sum, max_index)
1输入处理第一行输入包含两个正整数 N 和 M表示数组长度和需要寻找的连续元素个数第二行输入是包含 N 个整数的数组。
2最大和计算通过遍历数组找出所有长度为 M 的连续子数组并计算它们的和更新最大和及其起始位置。
3输出结果输出最大和及其起始位置位置从 1 开始计数。
4.给定两个整数N和M0nm100000求n到m中满足如下条件的数字该数字与相邻的前、后数字之和可以被5整除比如n4m11时5、10是满足条件的而6、7、8、9不满足4和11因为前、后数字不在1到n中不参与统计。输入说明两个正整数n和mnm100000输出说明满足要求的数字如果有多个满足条件的数字按出现次序输出前3个如果不足3个用-1补充。输入样例114100输出样例1152025输入样例2。
# 输入处理
n, m map(int, input().split())# 满足条件的数字列表
result []# 遍历 n 到 m 范围内的所有数字
for i in range(n, m 1):last_digit i % 10 # 获取数字的最后一位if last_digit ! 0 and i % last_digit 0 and i % 5 0:result.append(i)# 如果找到的数字少于 3 个使用 -1 填充
while len(result) 3:result.append(-1)# 输出前 3 个满足条件的数字
print(result[:3])
1输入处理输入两个整数 N 和 M表示范围 [N, M]。
2条件检查遍历范围内的每个数字检查最后一位不为 0、该数字能被其最后一位整除、并且能被 5 整除的条件。
3输出处理如果找到的数字少于 3 个则使用 -1 填充最后输出前 3 个满足条件的数字。