Рома555555
18.01.2021 00:05

Нужно написать программу в паскаль, которая будет проверять, "счастливый " билет или нет (номер билета состоит из 6 цифр). примечание: счастливым билетом называется число, в котором: а) при четном количестве цифр в числе сумма цифр его левой половины равна сумме цифр его правой половины; б) при нечетном количестве цифр – то же самое, но с отбрасыванием серединной цифры. например, рассмотрим число 1322. его левая половина равна 13, а правая – 22, и оно является счастливым билетом (т. к. 1 + 3 = 2 + 2).

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
РЧВ21
18.06.2021 17:55

1)

var

  str : string;

begin

  readln (str);

  writeln (length (str) - pos (':', str));

end.

 

2)

var

  str, s : string;

  count, i : integer;

begin

  readln (str);

  s := copy (s, pos ('(', str) + 1, pos (')', str) - pos ('(', str) - 1);

  count := 0;

  for i := 1 to length (s) do

    if s[i] = ' ' then inc (count);

  writeln (count + 1);

end.

 

3)

var

  str : string;

  count : integer;

begin

  readln (str);

  count := 0;

  while pos (',', str) > 0 do

  begin

    inc (count);

    delete (str, pos (',', str), 1);

  end;

  writeln (str);

  writeln (count);

end.

 

Сделано без проверки на соответствие условию.

0,0(0 оценок)
Ответ:
апк8
11.12.2021 19:51

var

k : byte;
arr : array of int64;
function Fn (c : byte) : int64;
begin
if arr[c - 1] <> 0 then
begin
Fn := arr[c - 1];
exit;
end;
if c < 3 then Fn := 1
else Fn := Fn (c - 1) + Fn (c - 2);
arr[c - 1] := Result;
end;

begin
read (k);
setlength (arr, k);
writeln (Fn (k));
end.

var
n : byte;
arr : array of int64;

tmp : int64;
function Fn (c : byte) : int64;
begin
if arr[c - 1] <> 0 then
begin
Fn := arr[c - 1];
exit;
end;
if c < 3 then Fn := 1
else Fn := Fn (c - 1) + Fn (c - 2);
arr[c - 1] := Result;
end;

begin
read (n);
setlength (arr, n);
tmp :=  (Fn (n));

tmp := 0;

for i := 1 to n do

  tmp := (tmp + arr[i]) mod 2;

if tmp = 1 then writeln ('No') else writeln ('Yes');

end.

 

Это нисходящее динамическое программирование. В массиве Arr храняится сами числа. Рекурсивная функция Fn (n) возвращает N-ое число. В б) мы сначала просчитываем n чисел (то есть считаем число n, так как для него нужны все предыдущие), а потом ищем их сумму. Так как числа могут быть большими, то мы берем сразу их остаток от деления 2 во избежание преполнения.

 

0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота