Назад

Разложение числа с ограниченными операциями — олимпиадная задача

Задача

Та же задача, но разрешается использовать из арифметических операций лишь сложение и вычитание, причём общее число действий должно быть порядка n.

Количество версий:
Решение

Введём переменнуюk_square(square — квадрат), связанную с kсоотношениемk_square=k2: k := 0; k_square := 0; writeln (k_square); while not (k = n) do begin | k := k + 1; | {k_square = (k-1) * (k-1) = kk - 2k + 1} | k_square := k_square + k + k - 1; | writeln (k_square); end; Замечание. Можно обойтись без вычитания с помощью такой хитрости: while not (k = n) do begin | k_square := k_square + k; | {k_square = kk + k} | k := k + 1; | {k_square = (k-1)(k-1)+(k-1)=k*k-k} | k_square := k_square + k; end;

Ответ

Ответ задачи отсутствует

Чтобы оставлять комментарии, войдите или зарегистрируйтесь

Комментариев нет