Есть ответ 👍

Дано натуральное число n. проверить, является ли оно счастливым билетом.
примечание: вообще, в обычно рассматриваются счастливые билеты с нечетным количеством цифр, потому что у них можно явно выделить левую и правую половины одинаковой длины,сумма цифр которых и сравниваются. однако мы несколько расширим это определение, полагая, что если число имеет нечетную длину, его центральную цифру можно отбросить, так как ее логично было бы прибавить к накапливаемым суммам обоих половин, что, собственно,не изменить отношение между ними.

вводные данные выходные данные
14350 true
65248 false

, просто от этого зависит моя оценка : )

241
479
Посмотреть ответы 2

Ответы на вопрос:


ответ:

код:

1.program happyticket;

2.var

3.n, a: longint;

4.left, right, digits, i: byte;

5.begin

6.readln(n);

7.a : = n;

8.digits : = 0;

9.while a < > 0 do begin

10.a : = a div 10;

11.inc(digits)

12.end;

13.left : = 0;

14.right : = 0;

15.for i : = 1 to digits div 2 do begin

16.right : = right + n mod 10;

17.n : = n div 10

18.end;

19.if odd(digits) then n : = n div 10;

20.for i : = 1 to digits div 2 do begin

21.left: = left + n mod 10;

22.n : = n div 10

23.end;

24.writeln(left = right)

25.end.

представим, как должен работать алгоритм при вводе числа 14350:

1)       считаем длину числа, она равна 5 (строки 11-14);

2)       в цикле из 5 div 2 = 2 повторений прибавляем к right крайние справа цифры 0 и 5, после чего отбрасываем их и имеем в n 143 (строки 17-20);

3)       так как odd(digits) = odd(5) = true, отбрасываем 3, после чего имеем в n 14 (строка 21);

4)       в цикле из 5 div 2 = 2 повторений прибавляем к left оставшиеся цифры 1 и 4, после чего n становится равно 0, что, впрочем, нас уже не интересует (строки 22-25);

5)       выводим на экран значение выражения left = right – ответ положительный (строка 26)

объяснение:

для ее решения необходимо знать длину числа (то есть его разрядность), вследствие чего нам необходимо скопировать переменную n в некоторую другую (например, a), чтобы на основе a посчитать количество десятичных разрядов n и сохранить его в некоторой переменной digits. сделать это можно так:

a : = n;

digits : = 0;

while a < > 0 do begin

a : = a div 10;

inc(digits)

end;


Вам необходимо в теле программы добавить инициализацию файла для вывода assign(output, '< путь к файлу> ') rewrite(output);

Реши свою проблему, спроси otvet5GPT

  • Быстро
    Мгновенный ответ на твой вопрос
  • Точно
    Бот обладает знаниями во всех сферах
  • Бесплатно
    Задай вопрос и получи ответ бесплатно

Популярно: Информатика

Caktus Image

Есть вопросы?

  • Как otvet5GPT работает?

    otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса.
  • Сколько это стоит?

    Проект находиться на стадии тестирования и все услуги бесплатны.
  • Могу ли я использовать otvet5GPT в школе?

    Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое!
  • В чем отличия от ChatGPT?

    otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.

Подпишись на наш телеграмм канал

GTP TOP NEWS