Игра в числа. Не могу понять постановку - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Постановка:

Игра в числа Никифор и Трофим играют в следующую игру: они написали на доске натуральное число, не превосходящее 2000000000, и по очереди делают ходы, причем первым ходит Никифор. Ход состоит в том, что из написанного на доске числа вычитается любая его ненулевая цифра, и новое число записывается на доске вместо старого. Например, если на доске написано число 40534, то следующим числом может быть 40530, 40531 и 40529. Выигрывает тот, кто напишет число ноль. Напишите программу, которая определяет, кто выигрывает при наилучшей игре противников. Входные данные На входе содержится единственное число, с которого начинается игра. Выходные данные На первой строчке следует вывести 1 если выиграет Никифор и 2 в противном случае. Если выигрывает Никифор, то во вторую строку должен быть выведен первый ход, обеспечивающий выигрыш. Если таких ходов несколько, то достаточно вывести любой из них.

Пример Входные данные: 14 Выходные данные: 1 4 2 Вариант: Входные данные: 300 Выходные данные: 2 7

Мне кода не надо. Просто понять по какому принципу будет назначаться следующие число. Или это с клавы?

Решение задачи: «Игра в числа. Не могу понять постановку»

textual
Листинг программы
var n: Longint;
begin
  ReadLn(n); WriteLn(Ord(n mod 10=0)+1);
  if n mod 10<>0 then WriteLn(n mod 10);
end.

Объяснение кода листинга программы

Этот код на Turbo Pascal выполняет следующую задачу: он читает число от пользователя, вычисляет его порядковый номер в диапазоне от 1 до 20 (если число находится в этом диапазоне), а затем выводит это число и его порядковый номер на экран. Если число не входит в диапазон от 1 до 20, то выводится только само число. Код состоит из следующих элементов:

  1. ReadLn(n); - эта строка считывает число от пользователя и сохраняет его в переменной n.
  2. WriteLn(Ord(n mod 10=0)+1); - эта строка вычисляет порядковый номер числа в диапазоне от 1 до 20 и выводит его на экран. Если число n делится на 10 без остатка, то к порядковому номеру добавляется единица.
  3. if n mod 10<>0 then WriteLn(n mod 10); - эта строка проверяет, делится ли число n на 10 без остатка. Если нет, то выводится само число.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5
Похожие ответы