ЗАДАЧИ
problems.ru |
О проекте
|
Об авторах
|
Справочник
Каталог по темам | по источникам | |
|
Задача 76222
УсловиеРазрешим применять команды write(i) лишь при
i = 0,1,2,...,9. Составить
программу, печатающую десятичную запись заданного
натурального числа
n > 0. (Случай
n = 0
явился бы некоторым исключением, так как обычно нули
в начале числа не печатаются, а для
n = 0 —
печатаются.)
Решениеbase:=1; {base - степень 10, не превосходящая n} while 10 * base <= n do begin | base:= base * 10; end; {base - максимальная степень 10, не превосходящая n} k:=n; {инвариант: осталось напечатать k с тем же числом знаков, что в base; base = 100..00} while base <> 1 do begin | write(k div base); | k:= k mod base; | base:= base div 10; end; {base=1; осталось напечатать однозначное число k} write(k); Замечание. Типичная ошибка при решении этой задачи: неправильно обрабатываются числа с нулями посередине. Приведённый инвариант допускает случай, когда k < base; в этом случае печатание k начинается со старших нулей. Источники и прецеденты использования |
© 2004-...
МЦНМО
(о копирайте)
|
Пишите нам
|
![]() |
Проект осуществляется при поддержке