- •Тема: Перебор вариантов. Задача 1. Замечательные числа
- •Задача 2. Острова
- •Задача 3 Клавиатура
- •Задача 4 . Вырубка деревьев
- •Краткие методические рекомендации по решению задачи
- •Оценка решения
- •Формат входных данных
- •Формат выходных данных
- •Работа с большими числами
- •Золото племени абба
- •Сортировка и поиск
- •2. Домашнее задание.
- •Метод перебора вариантов, отсечения перебора
- •Сумма двух чисел
- •Элементы вычислительной геометрии
- •4. Две окружности
- •Эффективные структуры данных
- •5. Поиск прямоугольников (Время: 0,5 сек. Память: 16 Мб Сложность: 34%)
- •Тема 1: «Работа с длинными числами»
- •Тема 2: Алгоритмы поиска и сортировки
- •Тема 3: Аналитическая геометрия
- •Тема 4: Перебор вариантов
- •Тема 5: Строки. Элементы лексического и синтаксического разобра
- •Задача 3. "Функция"
- •Ограничения
- •Площади покрытия антенны
- •Площадь покрытия решение
- •Элементы лексического и синтаксического разбора Шифровка
- •Шифровка Решение
- •Сортировка и поиск Независимые судьи
- •Независимые судьи Решение
- •Сувениры
- •Сувениры Решение
- •Треугольник Условие задачи
- •Треугольник Решение
- •Олимпиадные задачи по информатике
- •Задача 1. «Код да Винчи»
- •Задача 3 «Буквы»
- •Задача 4 «Соревнования»
- •Задача «Красивая последовательность»
- •Тема: Задача на динамическое программирование
- •Динамическое программирование Задача: Черепашка
- •Решение
- •Тема: Работа с большими числами
- •Тема: Сортировка и выбор
- •Задача. Подземная дорога (поиск в ширину)
- •Формат входных данных
- •Задача rebus
- •Задача “Эчпочмаки”
- •Задача “Ниточка”
- •Задача “Обезьяны”
- •Задача Интересное число
Задача 4 «Соревнования»
Задание. В соревнованиях по плаванию принимают участие n спортсменов. Соревнования состоят из трёх заплывов. Составить программу, определяющую лучший результат в каждом заплыве.
Формат входных данных
В первой строке входного файла input.txt вводится число n. В следующих строках находятся числа построчно - результаты каждого спортсмена в трех заплывах.
Формат выходных данных
Выводится три числа - лучшие результаты в каждом заплыве
Пример
Пример входного файла input.txt |
Пример выходного файла output.txt |
3 5.2 5.6 4.8 4.9 5.1 5.3 5.1 5.5 4.7 |
4.90 5.10 4.70 |
Код программы
program z1;
type mas=array[1..100,1..3] of real;
var i,j,n : byte;
b:array[1..3] of real; a:mas;
Procedure zap;
Begin
assign(input,'input.txt');
reset(input);
readln(n);
for i := 1 to n do
for j := 1 to 3 do
read(a[i, j]);
close(input);
End;
procedure resh;
begin
for j:=1 to 3 do
begin
b[j]:=a[1,j];
for i:=1 to n do
if a[i,j]<b[j] then b[j]:=a[i,j];
end;
end;
procedure vyv;
begin
assign(output,'output.txt');
rewrite(output);
for i:=1 to 3 do
write(b[i]:6:2);
close(output);
end;
BEGIN
zap;
resh;
vyv;
END.
Олимпиадные задачи
Задача «Красивая последовательность»
Имя входного файла: Input.txt.
Имя выходного файла: Output.txt.
Ограничение по времени: 1 секунда на каждый тест.
Красотой последовательности, что имеет N натуральных чисел, будем называть минимальное натуральное число М, которое нельзя представить в виде алгебраической суммы некоторых элементов последовательности. Например, красота последовательности 2, 3, 4 равна 8.
(1=-2+3, 2=-2+4, 3=3, 4=4, 5=2+3, 6=2+4, 7=4+3, 8=?)
Напишите программу, которая по данному числу N находит наилучшую последовательность из N чисел.
Формат входных данных: у входном файле находится число N (1≤N≤20).
Формат выходных данных: Выведите в выходной файл N чисел – элементы найденной последовательности, расположенной по возрастанию).
Пример:
-
Input.txt
Output.txt
2
1
3
Идея решения: Это поисковая задача. Закономерность можно увидеть во время нахождения элементов последовательности для N=3. Результатом поиска являются числа 1, 3, 9, то есть элементами последовательности являются числа – степени числа 3.
Решение
Program K;
Var
i, n: 1..20;
j: Longint;
Begin
Assign (input, ‘input.txt’);
Reset (input);
Readln (n);
Close (input);
Assign (output, ‘output.txt’);
Rewrite (output);
Writeln (1);
j:=1;
For i:=2 to n do
Begin
j:=j*3;
Writeln (j)
End;
Close (output)
End.
Задача
DATES. Стрелки часов движутся с постоянными угловыми скоростями и показывают h часов m минут. Найти число полных минут до того времени, когда стрелки совпадут. Данные вводятся из файла input.txt. В файл output.txt выводится количество полных минут.
|
input.txt |
output.txt |
Пример 1 Пример 2 |
0 0 1 1 |
0 5 |
Решение на языке Паскаль: program OLIMP; var CHAS,MIN,i:integer; CHAS1,MIN1:real; f,f1:text;
begin assign (f,' input.txt '); rewrite(f); write(' vvedite vrema '); readln(CHAS,MIN); writeln(f,CHAS:3,MIN:3); close(f); i:=0; CHAS1:=CHAS*30; MIN1:=MIN*6; while CHAS1>MIN1 do begin CHAS1:=CHAS1+0.5; MIN1:=MIN1+6; i:=i+1; end; assign(f1, ' output.txt '); rewrite(f1); writeln(' proshlo ',i,' minyt '); writeln(f1,i); close(f1) end.
Задача
Дано натуральное число N (N<=999). Записать это число русскими словами (семнадцать, двести пятьдесят три).
Ввод:
1 строка – N - число Вывод:
число словами
Пример:
-
Input.txt
Output.txt
25
двадцать пять
Указание: найдем количество сотен (s), количество десятков (d) и количество единиц (e), а также число. содержащее две последние цифры (p) в заданном числе N.
Если p принадлежит промежутку 11..19, то нет необходимости выводить количество десятков и единиц и d=p, е=0.
Использовать команду case для сотен, десятков и единиц ( в команду выбора по десяткам добавить и числа от 11 до 19).
В зависимости от значений s, d, e находим части строки, из которых затем легко можно составить все название числа.
program z4;
var n,s,d,e,p:integer;
ss,se,sd,ch:string[40];
BEGIN
assign(input,'input.txt'); reset(input);
readln(n);
close(input);
s:=n div 100;
e:=n mod 10;
d:=(n div 10) mod 10;
p:=n mod 100;
if (p<20) and (p>10) then begin d:=p; e:=0 end;
case s of
0: ss:='';
1:ss:='сто';
2:ss:='двести';
3:ss:='триста';
4:ss:= 'четыреста';
5:ss:='пятьсот';
6:ss:='шестьсот';
7:ss:='семьсот';
8:ss:='восемьсот';
9:ss:='девятьсот';
end;
case e of
0:se:='';
1:se:='один';
2:se:='два';
3:se:='три';
4:se:='четыре';
5:se:='пять';
6:se:='шесть';
7:se:='семь';
8:se:='восемь';
9:se:='девять';
end;
case d of
0:sd:='';
1:sd:='десять';
2:sd:='двадцать';
3:sd:='тридцать';
4:sd:='сорок';
5:sd:='пятьдесят';
6:sd:='шестьдесят';
7:sd:='семьдесят';
8:sd:='восемьдесят';
9:sd:='девяносто';
11:sd:='одиннадцать';
12:sd:='двенадцать';
13:sd:='тринадцать';
14:sd:='четырнадцать';
15:sd:='пятнадцать';
16:sd:='шестнадцать';
17:sd:='семнадцать';
18:sd:='восемнадцать';
19:sd:='девятнадцать';
end;
ch:=ss;
if (ch<>'') and (sd<>'') then ch:=ch+' '+sd
else ch:=ch+sd;
if (ch<>'') and (se<>'') then ch:=ch+' '+se
else ch:=ch+se;
assign(output,'output.txt'); rewrite(output);
writeln(ch);
close(output);
END.
