прежде всего, заметим, что для вывода используется оператор write, который не переходит на следующую строку; поэтому числа в цикле будут выводиться в одной строке «вплотную» друг к другу, без промежутков
для решения можно использовать «ручную прокрутку» программы, то есть, выполнить программу вручную для всех приведенных ответов
вспомним, что n mod 10 – остаток от деления числа на 10 – это последняя цифра числа в десятичной системе счисления;
операция n div 10 (деление нацело на 10) равносильна отбрасыванию последней цифры в десятичной системе счисления
эти две операции выполняются пока значение переменной n не станет равно нулю
теперь можно построить таблицу ручной прокрутки; рассмотрим первый из ответов, 716:
| n | n mod 10 | вывод на экран |
| 716 | | |
n <> 0? | | | |
write(2*(n mod 10)+1); | | 6 | 13 |
n := n div 10; | 71 | | |
n <> 0? | | | |
write(2*(n mod 10)+1); | | 1 | 3 |
n := n div 10; | 7 | | |
n <> 0? | | | |
write(2*(n mod 10)+1); | | 7 | 15 |
n := n div 10; | 0 | | |
n <> 0? | | | |
здесь зеленым фоном выделено истинное условие цикла, а красным – ложное (при котором цикл будет завершен);
видим, что в этом случае на экран будет выведена цепочка 13315, не равная заданной (13717)
аналогично проверяем все остальные предложенные ответы и выясняем, что для последнего числа, 836, на экран выводится цепочка 13717, совпадающая с заданной
таким образом, правильный ответ – 836