В этом простом задании вы получаете входной массив Lнеотрицательных целых чисел и количество бинов bбольше 0, но не больше длины L. Ваш код должен возвращать новый массив M, длина которого равна bи которая содержит массив L. Это проще всего объяснить на примерах.
L = [1,0,5,1]и b = 2возвращается M = [1,6].
L = [0,3,7,2,5,1]и b = 3возвращается M = [3,9,6].
Пока все просто. Однако в этом вопросе bне обязательно делить len(L). В этом случае последний бин будет иметь меньше чисел, чтобы составить его.
Каждый бин, кроме, возможно, последнего, должен иметь одинаковое количество чисел, вносящих вклад в его общее количество. Последний бин должен иметь не больше чисел, способствующих этому, чем другие бины. В последнем бине должно быть как можно больше чисел, способствующих этому, в соответствии с другими правилами.
L = [0,3,7,2,5,1]и b = 4возвращается M = [3,9,6,0]. M = [10,8,0,0]не является приемлемым выводом, так как третий бин не имеет имени числа чисел, вносящих в него свой вклад в качестве бинов 1и 2.
L = [0,3,7,2,5]и b = 2возвращается M = [10,7]. M = [3, 14]не является приемлемым выводом, так как последний бин будет иметь 3элементы, способствующие этому, но первый имеет только 2.
L = [1,1,1,1,1,1,1]и b = 3возвращается M = [3,3,1].
Как последнее правило, ваш код должен работать за линейное время.
Вы можете использовать любой язык или библиотеки, которые вам нравятся, и можете предполагать, что ввод предоставляется любым удобным для вас способом.
Оказывается, есть некоторые входные данные, которые не могут быть решены. Например [1,1,1,1,1]и b=4. Ваш код может выводить все что угодно для этих входных данных.
your code must run in linear time- Я нашел бы любой алгоритм, который не следует этому, естественно, довольно странно