Python程序:查找将多个金属棒材料装入容器所需的操作次数
假设我们的任务是运输多个不同尺寸的金属棒材料。但是运输容器长度不足,只能容纳长度为1的棒材料。我们被提供了n个金属棒材料,它们的长度以列表形式给出。因此,为了将所有材料装入容器,我们必须切割和分割所有材料,使它们成为单位尺寸。然后,我们将所有材料装入容器中,这将花费我们一次操作。我们需要找到执行材料所需的操作次数。
因此,如果输入为input_arr = [6, 3, 7],则输出将为22。
- 将大小为6的材料制成尺寸为1的材料,我们需要进行10次操作。
-
将大小为3的材料制成尺寸为1的材料,我们需要进行4次操作。
-
将大小为7的材料制成尺寸为1的材料,我们需要进行8次操作。
为了解决这个问题,我们将执行以下步骤−
- 定义一个函数prime_find()。其中输入为input_num。
- prime_check := 大小为floor value ((input_num-1) / 2)的新列表,值为True。
-
对于在3到(√(input_num)+1)的floor值范围内的p_num,增量为2,执行以下操作:
- 如果prime_check[floor value((p_num-3)/2)]非零,则
-
对于范围在prime_check内的floor value((p_num ^ 2-3) / 2)到p_num的每个元素,执行以下操作:
- prime_check[element] := 大小为(floor value((input_num-p_num ^ 2)/(2 * p_num) + 1))的新列表,值为False。
- 对于i在0到(floor value((input_num-1) / 2))的范围内,执行以下操作:
- 如果prime_check[i]为True,则
-
返回包含值2 + 2 * i + 3的列表。
-
从主函数中,执行以下操作−
- prime_nums := prime_find(10 ^ 6 + 100)
-
result := 0
-
对于input_arr中的每个值,执行以下操作:
- result := result + value
-
f_list := 新列表。
-
对于prime_nums中的每个p_num,执行以下操作:
-
当value mod p_num相同时,执行以下操作:
- 将p_num插入f_list的末尾。
-
value := floor value of (value / p_num)。
-
如果p_num ^ 2 > value,则
- 如果value > 1,则
-
将值插入f_list的末尾。
-
退出循环。
-
-
temp := 1
-
对于f_list中每个p_num的反向顺序,执行以下操作:
-
result := result + temp
-
temp := temp * p_num
-
-
返回结果。
- prime_nums := prime_find(10 ^ 6 + 100)
示例
让我们看下面的实现以获得更好的理解−