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

решить Python Ежеминутные автобусы
(Время: 2 сек. Память: 128 Мб Сложность: 30%)
На автобусную остановку каждую минуту подходит автобус одного из маршрутов. Диспетчерская служба собрала данные за N минут – номера маршрутов каждого автобуса.

Требуется определить максимально возможное время ожидания для пассажира, желающего уехать определенным маршрутом. Т.е. в данной последовательности номеров маршрутов нужно найти два самых удаленных числа, равных между собой, между которыми нет равных им. Например, для последовательности 2, 11, 2, 2, 25, 11, 25, 11 максимальное время ожидания равно 4 (для маршрута номер 11).

Входные данные
Входной файл INPUT.TXT содержит в первой строке число N (2 ≤ N ≤ 106). Во второй строке записаны N чисел – номера маршрутов. Все числа натуральные и не превышают 100. Каждый номер маршрута встречается не менее двух раз.

Выходные данные
В выходной файл OUTPUT.TXT выведите ответ на задачу.

Примеры
№ INPUT.TXT OUTPUT.TXT
1 8
2 11 2 2 25 11 25 11 4
2 4
23 23 41 41 1

Показать ответ
Ответ:
emoe0zosixnc
emoe0zosixnc
06.12.2020 10:19
PascalABC.NET 3.3.5, сборка 1662 от 29.04.2018
Внимание! Если программа не работает, обновите версию!

function gcd(a,b:integer):integer; // НОД
begin
  while b<>0 do begin a:=a mod b; Swap(a,b) end;
  Result:=a
end;

procedure RedFrac(var a,b:integer); // сокращение дроби
begin
  var (sgna,sgnb):=(Sign(a),Sign(b)); // мы должны учитывать знак!
  (a,b):=(Abs(a),Abs(b));
  var d:=gcd(a,b);
  a:=(a div d)*sgna; b:=(b div d)*sgnb
end;

begin
  var (a,b):=ReadInteger2('Введите числитель и знаменатель 1-й дроби:');
  var (c,d):=ReadInteger2('Введите числитель и знаменатель 2-й дроби:');
  (a,b):=(a*c,b*d);
  RedFrac(a,b);
  Writeln('Результат умножения: ',a,' / ',b)
end.

Пример
Введите числитель и знаменатель 1-й дроби: 32 1024
Введите числитель и знаменатель 2-й дроби: 60 300
Результат умножения: 1 / 160

В качестве бонуса - решение на базе входящей в состав PascalABC.NET библиотеки численных методов

uses NumLibABC;

begin
  var (a,b):=ReadInteger2('Введите числитель и знаменатель 1-й дроби:');
  var (c,d):=ReadInteger2('Введите числитель и знаменатель 2-й дроби:');
  Writeln('Результат умножения: ',Frc(a,b)*Frc(c,d))
end.
0,0(0 оценок)
Ответ:
Molly11111
Molly11111
05.09.2022 21:17
Задача 1.
Общее количество символов: 50*85*15= 63750
Один символ кодируется 8 битами или 1 байтом, следовательно объем текста = 63750 байт = 62,26 Кбайт

Задача 2.
Количество символов на странице: 60*64 = 3840
Разделив объем текста (в байтах) на количество символов на странице получим количество страниц: (9*1024)/3840 = 2,4
Следовательно  ответ: 3 страницы

Задача 3.
Время передачи файла можно определить разделив объем файла( переведя в биты) на скорость передачи
t= (9*1024*8)/256 = 288 сек.

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