ььь 1. О становлении информатики как науки. 2. Об обработке информации 3. О типах систем счисления 4. О компьютерных сетях 5. О программах, позволяющих работать в Интернете. 6. Об антивирусах
// PascalABC.NET 3.2, сборка 1379 от 21.01.2017 // Внимание! Если программа не работает, обновите версию!
begin var ЕстьКусков,НадоКусков:integer; Readln(ЕстьКусков,НадоКусков); var Длины:=ReadArrInteger(ЕстьКусков); var ОбщаяДлина:=Длины.Sum; if НадоКусков>ОбщаяДлина then Writeln(0) else begin var ДлинаКуска:=ОбщаяДлина div НадоКусков; repeat if Длины.Select(Кусок->Кусок div ДлинаКуска).Sum >=НадоКусков then break else ДлинаКуска-=1; until false; writeln(ДлинаКуска) end end.
Для перевода числа из десятичной системы счисления в двоичную нужно делить это число на 2 до тех пор, пока не получим ноль, и остатки выписывать. Делить нужно нацело, то есть дробной части быть не должно.
Теперь записываем остатки снизу вверх (хотя тут не важно): 1001
9(10) = 1001(2).
Второй
9 = 8 + 1 = 2^3 + 2^0
Число 2 в какой-либо степени в системе счисления с основанием 2 представляет собой единицу, после которой идут нули, количество которых равно этой степени:
// Внимание! Если программа не работает, обновите версию!
begin
var ЕстьКусков,НадоКусков:integer;
Readln(ЕстьКусков,НадоКусков);
var Длины:=ReadArrInteger(ЕстьКусков);
var ОбщаяДлина:=Длины.Sum;
if НадоКусков>ОбщаяДлина then Writeln(0)
else begin
var ДлинаКуска:=ОбщаяДлина div НадоКусков;
repeat
if Длины.Select(Кусок->Кусок div ДлинаКуска).Sum >=НадоКусков then break
else ДлинаКуска-=1;
until false;
writeln(ДлинаКуска)
end
end.
Пример
4 11
802 743 457 539
200