Дано натуральное число n. проверить, является ли оно счастливым билетом.
примечание: вообще, в обычно рассматриваются счастливые билеты с нечетным количеством цифр, потому что у них можно явно выделить левую и правую половины одинаковой длины,сумма цифр которых и сравниваются. однако мы несколько расширим это определение, полагая, что если число имеет нечетную длину, его центральную цифру можно отбросить, так как ее логично было бы прибавить к накапливаемым суммам обоих половин, что, собственно,не изменить отношение между ними.
вводные данные выходные данные
14350 true
65248 false
, просто от этого зависит моя оценка : )
Ответы на вопрос:
ответ:
код:
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;
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
соня158128.07.2020 03:21
-
nomeNome13No10.04.2021 16:19
-
Сангали03.06.2023 22:00
-
LitRoboBoytle29.08.2020 17:50
-
creeperm47701.11.2020 13:56
-
nadezhstepan2005.08.2021 07:37
-
vickatrasyuk11.12.2021 01:32
-
ffffffqqqqq111117.03.2022 18:06
-
annamos1612.12.2021 02:23
-
Крыло27.04.2023 07:19
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.