Разложение числа с ограниченными операциями — олимпиадная задача
Нет ответа
Задача
Та же задача, но разрешается использовать из арифметических операций лишь сложение и вычитание, причём общее число действий должно быть порядка 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;
Ответ
Ответ задачи отсутствует
Чтобы оставлять комментарии, войдите или зарегистрируйтесь
Комментариев нет