В
Все
Б
Биология
Б
Беларуская мова
У
Українська мова
А
Алгебра
Р
Русский язык
О
ОБЖ
И
История
Ф
Физика
Қ
Қазақ тiлi
О
Окружающий мир
Э
Экономика
Н
Немецкий язык
Х
Химия
П
Право
П
Психология
Д
Другие предметы
Л
Литература
Г
География
Ф
Французский язык
М
Математика
М
Музыка
А
Английский язык
М
МХК
У
Українська література
И
Информатика
О
Обществознание
Г
Геометрия
Veroni4ka7090
Veroni4ka7090
27.03.2021 17:02 •  Информатика

Некоторый алгоритм из одной цепочки символов получает новую цепочку следующим образом. сначала вычисляется длина исходной цепочки символов; если она четна, то в середину цепочки символов добавляется символ "x", а если нечетна, то в конец цепочки добавляется символ "z". в полученной цепочке символов каждая буква заменяется буквой, следующей за ней в латинском алфавите (a - на b, b - на c и т.д., а z - на a). получившаяся таким образом цепочка является результатом работы алгоритма. дана цепочка символов start. какая цепочка символов получится, если к данной цепочке применить описанный алгоритм дважды? латинский алфавит:

Показать ответ
Ответ:
MINIONCHIK17
MINIONCHIK17
31.07.2021 12:53

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

Пример реализации:

def bin_search(arr, target, kind="<="):

   assert kind in ["<=", ">="]

   if kind == "<=":

       comp = lambda a, b: a <= b

   else:

       comp = lambda a, b: a < b

   l = 0

   r = len(a) - 1

   while l < r - 1:

       m = (l + r) // 2

       if comp(a[m], target):

           l = m

       else:

           r = m

   if kind == "<=":

       return arr[l]

   else:

       return arr[r]

def nearest(arr, target):

   nearest_le = bin_search(arr, target, "<=")

   nearest_ge = bin_search(arr, target, ">=")

   if nearest_ge - target < target - nearest_le:

       return nearest_ge

   else:

       return nearest_le

_ = input()

a = [int(x) for x in input().split()]

a = [float("-Infinity")] + a + [float("+Infinity")]

for target in map(int, input().split()):

   print(nearest(a, target))

0,0(0 оценок)
Ответ:
Tata123N
Tata123N
15.09.2022 17:56
Если считать отрицательные трехзначные, то сумма таких чисел в диапазонах от -999 до -100 и от 100 до 999 будет равна 0. Для только положительных:

//c циклом for
var s,i:integer;
begin
  for i:=100 to 999 do
    if i mod 77 = 0 then s:=s+i;
  writeln('Сумма трехзначных кратных 77: ',s);
end.

Тестовое решение:
Сумма трехзначных кратных 77: 5929

// с циклом while
var s,i:integer;
begin
  i:=100;
  while i<=999 do begin
    if i mod 77 = 0 then s:=s+i;
    i:=i+1;
  end;
  writeln('Сумма трехзначных кратных 77: ',s);
end.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота