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

PYTHON: Написать программу, которая выводит ваш возраст в формате: "Вам XX год/года/лет". Ключевой момент в программе в том, что надо сделать именно "года/лет/год", когда надо​

Показать ответ
Ответ:
nagornaykisa
nagornaykisa
06.09.2020 05:49

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

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

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 оценок)
Ответ:
angelinaosadchy
angelinaosadchy
11.06.2020 20:07
ответ в комментарии,для лучшей читаемости кода.
program chicla;var a,b,c,d,f,sum:integer;  sr:real;begin Writeln('Ââåäèòå ïåðâîå ÷èñëî'); readln(a) ; Writeln('Ââåäèòå âòîðîå ÷èñëî'); readln(b); Writeln('Ââåäèòå òðåòüå ÷èñëî'); readln(c); Writeln('Ââåäèòå ÷åòâåðòîå ÷èñëî'); readln(d); f:=a+b; if f>20 then  begin    f:=f-10;    writeln(f);  end  else   begin    f:=f+10;    writeln(f)   end; if b>=0 then  begin   a:=a-1;   b:=b-1;   c:=c-1;   d:=d-1;   writeln('1 ÷èñëî ïîñëå óìåíüøåíèÿ íà åäèíèöó= ',a);   writeln('2 ÷èñëî ïîñëå óìåíüøåíèÿ íà åäèíèöó= ' ,b);   writeln('3 ÷èñëî ïîñëå óìåíüøåíèÿ íà åäèíèöó= ' ,c);   writeln('4 ÷èñëî ïîñëå óìåíüøåíèÿ íà åäèíèöó= ' ,d);  end else  begin   sr:=(a+b+c+d)/4;   writeln('Ñðåäíåå àðèôìåòè÷åñêîå = ' ,sr);  end;end.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота