Назовём расстоянием между двумя ступеньками количество ступенек между ними (например, расстояние между ступеньками с номерами 1 и 64 равно 62; между 64 и 100 - 35). Максимальным расстоянием я буду называть наибольшее расстояние от среднего камня до крайнего.
Если положить камень посередине между камнями, расстояние между которыми равно , то если нечётное, то новые расстояния будут , а если чётное, то и .
Заметим, что максимальное расстояние на -м шаге равно , то после перекладывания камня оно будет не больше
где - округление до ближайшего большего целого.
Значит, после первого хода Сизифа максимальное расстояние будет не больше 31, после второго не больше 15, после третьего 7, после четвертого 3, после пятого 1, после шестого 0. Больше новых ходов Сизиф сделать не сможет, значит, количество ходов может быть не больше шести.
Вот как может проходить игра из шести шагов (числа обозначают номера ступенек, на которых лежат камни):
6
Объяснение:
Назовём расстоянием между двумя ступеньками количество ступенек между ними (например, расстояние между ступеньками с номерами 1 и 64 равно 62; между 64 и 100 - 35). Максимальным расстоянием я буду называть наибольшее расстояние от среднего камня до крайнего.
Если положить камень посередине между камнями, расстояние между которыми равно
, то если
нечётное, то новые расстояния будут
, а если чётное, то
и
.
Заметим, что максимальное расстояние на
-м шаге равно
, то после перекладывания камня оно будет не больше
где
- округление до ближайшего большего целого.
Значит, после первого хода Сизифа максимальное расстояние будет не больше 31, после второго не больше 15, после третьего 7, после четвертого 3, после пятого 1, после шестого 0. Больше новых ходов Сизиф сделать не сможет, значит, количество ходов может быть не больше шести.
Вот как может проходить игра из шести шагов (числа обозначают номера ступенек, на которых лежат камни):
До: 1, 64, 100. После: 1, 33, 64.До: 1, 33, 64. После: 1, 17, 33.До: 1, 17, 33. После: 1, 9, 17.До: 1, 9, 17. После: 1, 5, 17.До: 1, 5, 17. После: 1, 3, 5.До: 1, 3, 5. После: 1, 2, 3.===== PascalABC.NET =====
type
Vector = array of real;
function operator +(a, b: Vector): Vector;
ExtensionMethod := a.Zip(b, (p, q) -> p + q).ToArray;
function operator -(a, b: Vector): Vector;
ExtensionMethod := a.Zip(b, (p, q) -> p - q).ToArray;
function operator *(s: real; a:Vector): Vector;
ExtensionMethod := a.ConvertAll(p -> p * s);
begin
var a: Vector := ReadArrReal('Вектор a:', 3);
var b: Vector := ReadArrReal('Вектор b:', 3);
var c: Vector := ReadArrReal('Вектор c:', 3);
var k := ReadReal('k =');
Println(k * (a + b) + (1 - k) * (a + c))
end.