- •Тема: Перебор вариантов. Задача 1. Замечательные числа
- •Задача 2. Острова
- •Задача 3 Клавиатура
- •Задача 4 . Вырубка деревьев
- •Краткие методические рекомендации по решению задачи
- •Оценка решения
- •Формат входных данных
- •Формат выходных данных
- •Работа с большими числами
- •Золото племени абба
- •Сортировка и поиск
- •2. Домашнее задание.
- •Метод перебора вариантов, отсечения перебора
- •Сумма двух чисел
- •Элементы вычислительной геометрии
- •4. Две окружности
- •Эффективные структуры данных
- •5. Поиск прямоугольников (Время: 0,5 сек. Память: 16 Мб Сложность: 34%)
- •Тема 1: «Работа с длинными числами»
- •Тема 2: Алгоритмы поиска и сортировки
- •Тема 3: Аналитическая геометрия
- •Тема 4: Перебор вариантов
- •Тема 5: Строки. Элементы лексического и синтаксического разобра
- •Задача 3. "Функция"
- •Ограничения
- •Площади покрытия антенны
- •Площадь покрытия решение
- •Элементы лексического и синтаксического разбора Шифровка
- •Шифровка Решение
- •Сортировка и поиск Независимые судьи
- •Независимые судьи Решение
- •Сувениры
- •Сувениры Решение
- •Треугольник Условие задачи
- •Треугольник Решение
- •Олимпиадные задачи по информатике
- •Задача 1. «Код да Винчи»
- •Задача 3 «Буквы»
- •Задача 4 «Соревнования»
- •Задача «Красивая последовательность»
- •Тема: Задача на динамическое программирование
- •Динамическое программирование Задача: Черепашка
- •Решение
- •Тема: Работа с большими числами
- •Тема: Сортировка и выбор
- •Задача. Подземная дорога (поиск в ширину)
- •Формат входных данных
- •Задача rebus
- •Задача “Эчпочмаки”
- •Задача “Ниточка”
- •Задача “Обезьяны”
- •Задача Интересное число
Сортировка и поиск Независимые судьи
В некоторых видах спортивных соревнований выступление каждого спортсмена оценивается независимо несколькими судьями, потом из этой совокупности оценок удаляется наибольшая и наименьшая, а для тех оценок, что остались, определяется среднее арифметическое, которое идет в зачёт спортсмену. Если наибольшую оценку выставило несколько судей, то из совокупности оценок удаляется только одна такая оценка (аналогично поступают с наименьшими оценками).
Пусть n (n ≥ 3) судей выставили одному из спортсменов соответственно оценки: а1, а2, …, аn. Определить, какая итоговая оценка пойдёт спортсмену в зачёт.
Во входном файле input.txt в первой строке дано количество судей n, во второй – баллы первого судьи, в третьей – баллы второго судьи и т. д., в n+1 строке – баллы n-го судьи. В выходном файле output.txt содержится одно число – итоговая оценка спортсмена.
Пример входного и выходного файлов
input.txt |
output.txt |
6 34 56 2 33 5 6 |
19.5 |
Независимые судьи Решение
program sport;
var n, i, max, min, s:integer;
a:array[1..100] of integer;
sr: real;
f, g: text;
begin
assign (f,'input.txt');
assign (g,'output.txt');
reset (f);
readln (f, n); //чтение из файла количества судей
for i:=1 to n do
readln (f, a[i]); //чтение из файла оценок судей
close (f);
max:=a[1];
min:=a[1];
for i:=2 to n do
begin
if a[i]>=max then max:=a[i]; //нахождение max и min оценок
if a[i]<=min then min:=a[i];
end;
s:=0;
for i:=1 to n do
begin
s:=s+a[i]; //нахождение суммы всех оценок
end;
s:=s-max-min; //изымание max и min оценок из общей суммы
sr:=s/(n-2); //нахождение среднего арифметического оценок
rewrite (g);
writeln (g, sr);
close (g);
end.
Длинная арифметика
Сувениры
Два брата-путешественника независимо друг от друга совершили кругосветное путешествие. Они посетили не менее 10 и не более 500 населенных пунктов, и в каждом населенном пункте могли купить сувениры (не более 9). Встретившись, каждый из братьев записал в файл data.txt строку со своим числом, каждая цифра которого означала количество сувениров, купленных в отдельном населенном пункте.
Задание. Помогите братьям найти сумму полученных таким образом чисел и записать ее в выходной файл sum.txt.
Примеры входного и выходного файлов
data.txt |
sum.txt |
5273910548975 4720150081128349 |
4725423991677324 |
Сувениры Решение
program files1;
type mass=array [1..500] of integer;
var f1, f2: text; s, q, t, d, y: string; a, b, c: mass; i, n, k, r, max, p: integer;
begin
assign (f1,'data.txt'); //связь файловой переменной с входным файлом
reset (f1);
readln (f1, s); // считывание первого слагаемого в виде строки символов
readln (f1, q); // считывание второго слагаемого в виде строки символов
n:=length (s); //длина первого числа
// каждый символ первого числа превращается в цифру (числовой формат) и записывается в массив а, причем самый правый символ – младший разряд числа
for i:= n downto 1 dobegin
t:=copy (s, i, 1);
val (t, r);
a[n-i+1] := r;
end;
// каждый символ второго числа превращается в цифру (числовой формат) и записывается в массив b, причем самый правый символ – младший разряд числа
k:=length (q); // длина второго числаfor i:=k downto 1 do
begin
t:=copy (q, i, 1);
val (t, r);
b[k-i+1]:=r;
end;
close (f1); // закрываем файловую переменную
// определяем размер массива, в котором будет храниться сумма чисел
if n>k then max:=n else max:=k;
// р – сумма цифр соответствующих разрядов
p:=0;
for i:=1 to max do
// формирование цифр в числе-сумме с учетом перехода через десяток
beginp:=a[i]+b[i]+p div 10;
c[i]:=p mod 10;
end;
// //массив с результатом преобразуется в строковую переменную у и посимвольно накапливается в строке d таким образом, чтобы слева начинались старшие разряды суммы
if p>=10 then c[max]:=c[max]+10; // учитывается, что сумма старших разрядов может быть больше 9, поэтому первая цифра в результате – 1.for i:=max downto 1 do
begin str(c[i],y); d:=d+y end;
assign (f2,'sum.txt'); // файловая переменная связывается с выходным файлом
rewrite (f2); // подготовка выходного файла для записи
write (f2,d); // запись результата в выходной файл
close (f2); // закрытие выходного файла
end.
Метод перебора вариантов
