Презентация Районная олимпиада по программированию онлайн
На нашем сайте вы можете скачать и просмотреть онлайн доклад-презентацию на тему Районная олимпиада по программированию абсолютно бесплатно. Урок-презентация на эту тему содержит всего 59 слайдов. Все материалы созданы в программе PowerPoint и имеют формат ppt или же pptx. Материалы и темы для презентаций взяты из открытых источников и загружены их авторами, за качество и достоверность информации в них администрация сайта не отвечает, все права принадлежат их создателям. Если вы нашли то, что искали, отблагодарите авторов - поделитесь ссылкой в социальных сетях, а наш сайт добавьте в закладки.
Презентации » Устройства и комплектующие » Районная олимпиада по программированию
Оцените!
Оцените презентацию от 1 до 5 баллов!
- Тип файла:ppt / pptx (powerpoint)
- Всего слайдов:59 слайдов
- Для класса:1,2,3,4,5,6,7,8,9,10,11
- Размер файла:499.50 kB
- Просмотров:47
- Скачиваний:0
- Автор:неизвестен
Слайды и текст к этой презентации:
№2 слайд
Содержание слайда: Задача 1. «Речные гонки»
Егор и Петр участвуют в речной гонке на лодках: участники одновременно стартуют в пункте A и должны проплыть против течения реки в пункт B. Тот, кто приплывет первым, объявляется победителем. В результате жеребьевки Егору и Петру выпало участвовать в одном заплыве.
Нам известны скорости движения лодок ребят и скорость течения реки.
Ваша задача – определить, кто же из них победит.
№3 слайд
Содержание слайда: Задача 1. «Речные гонки»
Входной файл river.in:
В первой строке ввода содержатся три целых числа: V1 – скорость лодки Егора, V2 – скорость лодки Петра и V3 – скорость течения реки
(0 ≤ V1, V2, V3 ≤ 106).
Выходной файл river.out:
Выводится одна строка, содержащая следующий текст:
"EGOR", если первым приплывет Егор;
"PETR", если первым приплывет Петр;
"RIVER", если победителя определить не удалось.
№6 слайд
Содержание слайда: Задача 1. «Речные гонки»
var
v1, v2, v3 : longint;
f_in, f_out : text;
begin
assign(f_in,'river10.in'); reset(f_in);
readln(f_in,v1,v2,v3); close(f_in);
assign(f_out,'river.out'); rewrite(f_out);
if (v1>v2) and (v1>v3) then write(f_out,'EGOR');
if (v2>v1) and (v2>v3) then write(f_out,'PETR');
if (v1=v2) or ((v1<=v3) and (v2<=v3)) then write(f_out,'RIVER');
close(f_out);
end.
№7 слайд
Содержание слайда: Задача 2. «Сеть»
Для проведения олимпиады организаторы планируют объединить компьютеры участников
в сеть. Из сетевого оборудования в наличии есть N коммутаторов и неограниченное количество сетевых кабелей. Коммутатор с номером i (1 ≤ i ≤ n) характеризуется числом ai — количеством портов
в этом коммутаторе.
Организаторы могут соединить кабелем либо два коммутатора, либо два компьютера, либо коммутатор и компьютер. Каждый коммутатор может быть соединен кабелями не более чем с ai устройствами (коммутаторами или компьютерами), каждый компьютер — не более чем с одним.
№8 слайд
Содержание слайда: Задача 2. «Сеть»
Два компьютера могут обмениваться данными, если от одного из них до другого можно добраться по кабелям, возможно, пройдя при этом по цепочке из коммутаторов. Организаторы хотят построить сеть таким образом, чтобы каждые два компьютера могли обмениваться данными.
Какое максимальное количество компьютеров организаторы могут объединить в сеть, используя имеющиеся коммутаторы?
№9 слайд
Содержание слайда: Задача 2. «Сеть»
Входной файл network.in:
В первой строке входного файла находится одно число N — количество коммутаторов, имеющихся
у организаторов (0 ≤ N ≤ 105).
Во второй строке файла находится N чисел
ai — количество портов в коммутаторе с номером i (1 ≤ ai ≤ 109, 1 ≤ i ≤ N).
Выходной файл network.out:
Выводится единственное число — максимальное количество компьютеров, которое удастся объединить в сеть, используя имеющиеся коммутаторы.
№11 слайд
Содержание слайда: Задача 2. «Сеть»
Обратим внимание на то, что коммутатор с одним портом бесполезен и, более того, вреден – он занимает порт у другого коммутатора, к которому мог быть подключен компьютер.
Точно также бесполезен (хотя и не вредит!) коммутатор с двумя портами.
Таким образом все коммутаторы, у которых один или два порта, необходимо исключить из рассмотрения.
Найдем количество коммутаторов m, у которых портов больше 2, а также общее количество портов у всех таких коммутаторов sp.
№12 слайд
Содержание слайда: Задача 2. «Сеть»
По окончании цикла проверим m.
Если m=0, т.е. не задействован ни один коммутатор, то соединить можно только два компьютера.
В противном случае, для объединения в сеть
m коммутаторов необходимо m-1 соединение, т.е. 2(m-1) порт. Таким образом, искомое количество компьютеров равно sp - 2(m-1).
№15 слайд
Содержание слайда: Задача 3. «Большое число »
Дано целое число N, состоящее из четного количества десятичных цифр.
Над ним последовательно производятся следующие действия:
1. цифры числа разделяются на две равные половины;
2. левая и правая половины разворачиваются, то есть порядок следования цифр меняется на противоположный;
3. аналогичные действия выполняются для частей числа без первой и последней цифры, и так далее.
№16 слайд
Содержание слайда: Задача 3. «Большое число »
Когда останется последняя цифра первой половины числа и первая — второй, процесс останавливается, так как разворачивать их не имеет смысла.
Рассмотрим пример. Пусть N = 1234567890. Тогда в процессе выполнения указанных действий будет получена следующая цепочка: 5432109876, 5123478906, 5143298706, 5142389706.
Ваша задача — узнать результат последовательности указанных преобразований.
№19 слайд
Содержание слайда: Задача 3. «Большое число»
Т.к. исходное число может содержать в начале нули, то хранить его нужно в строковом виде.
А т.к. в нем может быть до 10000 цифр, то будем использовать тип AnsiString.
Пусть
n – количество цифр в числе;
np – количество цифр в половине числа;
k – номер цифры в 1-й половине числа, с которой должна начаться перестановка цифр.
Тогда
np-k+1 - количество переставляемых цифр в одной половине;
(np-k+1) div 2 - количество перестановок.
№20 слайд
Содержание слайда: Задача 3. «Большое число»
Пусть i – номер перестановки (1≤ i ≤ (np-k+1) div 2), тогда в 1-й половине переставляются цифры
на позициях k+i-1 и np-i+1, а во 2-й половине –
на позициях np+i и n-k-i+2.
В начале k=1, затем, после выполнения всех перестановок для этого значения k, оно увеличивается на 1.
Данный цикл перестановок продолжается до тех пор, пока k не сравняется с np.
№24 слайд
Содержание слайда: Задача 4. «Ох, уж эти скобки»
Математическое выражение записано в виде произведения:
(±a2x2±a1x±a0)∙(±b2x2±b1x±b0)∙(±c2x2±c1x±c0)∙…
Внутри каждой из N скобок произведения находится выражение вида:
±a2x2±a1x±a0,
где хотя бы один из коэффициентов ai не равен нулю (bi, ci и т.д., аналогично).
№26 слайд
Содержание слайда: Задача 4. «Ох, уж эти скобки»
Входной файл brackets.in:
В первой строке входного файла находится число N (1 ≤ N ≤ 6).
Во второй строке находится выражение из N пар скобок. Внутри каждой пары скобок находится выражение в виде «±a2x^2±a1x±a0», где «±»— это или знак «+», или знак «−».
Значение каждого из коэффициентов ai, bi, ci и т.д. не превышает 10.
№27 слайд
Содержание слайда: Задача 4. «Ох, уж эти скобки»
Выражение составлено по следующим правилам:
Всё выражение записывается, начиная со старшей степени переменной по убыванию степеней.
Если какой-то коэффициент равен нулю, то этот коэффициент и соответствующий ему x опускаются в записи вместе с арифметическим знаком. Исключением является случай, когда все коэффициенты равны нулю. В этом случае вместо всего выражения указывается единственный коэффициент 0.
Если ai=±1 и i>0, то единица перед соответствующим ему x
не ставится.
Если первый отличный от нуля коэффициент положителен, то знак «+» перед ним опускается.
В выражении отсутствуют пробельные символы (пробел, табуляция) и знаки умножения.
№28 слайд
Содержание слайда: Задача 4. «Ох, уж эти скобки»
Выходной файл brackets.in:
В первой строке выходного файла выводится результат раскрытия скобок в исходном выражении в следующем формате:
±q2Nx^(2N)±q2N-1x^(2N-1)±…±q1x±q0.
Формат выражения должен полностью соответствовать описанию для входного файла. Скобки вокруг степеней ставить не нужно, они приведены здесь только для читабельности.
№30 слайд
Содержание слайда: Задача 4. «Ох, уж эти скобки»
В массиве r[1..3,1..13] будем записывать коэффициенты трех многочленов (в 1-й строке –
1-й множитель, во 2-й строке – 2-й множитель, в 3-й строке – произведение.
Процедура Skobka записывает коэффициенты трехчлена одной скобки либо в 1-ю либо во 2-ю строки массива.
Процедура Sol перемножает многочлен 1-й строки массива на трехчлен 2-й строки массива, при этом результат сначала получается в 3-й строке, а затем переносится в 1-ю строку.
Процедура Output выводит полученный результат.
№31 слайд
Содержание слайда: Задача 4. «Ох, уж эти скобки»
В процедуре Skobka сначала в строке s ищется позиция p символов x^. Если p>0, то s[1] .. s[p-1] образуют коэффициент при x2. При этом нужно учесть случаи, когда p=1 (x^2), p=2 и s[1]=‘-’ (-x^2).
Символы с 1 по p+2 в строке s удаляются.
Затем в строке s ищется позиция p символа x. Если p>0, то s[1] .. s[p-1] образуют коэффициент при x. При этом нужно учесть случаи, когда p=1 (x), p=2 и s[1]=‘-’ (-x), p=2 и s[1]=‘+’ (+x).
Символы с 1 по p в строке s удаляются.
Оставшиеся символы в строке s образуют свободный член трехчлена.
№33 слайд
Содержание слайда: Задача 4. «Ох, уж эти скобки»
При выводе результата необходимо учитывать следующие моменты;
Перед каждым положительным коэффициентом, кроме первого слагаемого, должен стоять знак +.
Коэффициент 1 не выводится.
У коэффициента -1 выводится только знак -.
Пункты 2 и 3 не распространяются на вывод свободного члена.
Если все коэффициенты результата равны 0,
то необходимо вывести 0.
№38 слайд
Содержание слайда: Задача 4. «Ох, уж эти скобки»
procedure output; var f:integer;
begin
f:=0;
for i:=1 to 13 do
if r[1,i]<>0
then begin
if (f=1) and (r[1,i]>0) then write(f_out,'+');
if r[1,i]=-1 then if i=13 then write(f_out,'-1‘) else write(f_out,'-‘)
else if (r[1,i]<>1) or (i=13) then write(f_out,r[1,i]);
if i<13 then write(f_out,'x');
if i<12 then write(f_out,'^',13-i);
f:=1;
end
if f=0 then write(f_out,0);
end;
№39 слайд
Содержание слайда: Задача 4. «Ох, уж эти скобки»
begin
assign(f_in,'brackets1.in'); reset(f_in);
readln(f_in,n); readln(f_in,s); close(f_in);
if n=1
then skobka(copy(s,2,length(s)-2),1)
else begin
p:=pos(')',s); skobka(copy(s,2,p-2),1); delete(s,1,p);
for i:=2 to n do
begin
p:=pos(')',s); skobka(copy(s,2,p-2),2); delete(s,1,p);
sol;
end;
end;
№41 слайд
Содержание слайда: Задача 5. «Разбиение числа »
Факториалом числа n называется произведение n!=1·2·...·n при n>0 и n!=1 при n=0.
Количество сочетаний из n элементов по k определяется следующим образом:
Cnk=n!/(k!(n-k)!), если 0≤k≤n, и Cnk=0, если k>n.
В математике такие числа называются также биномиальными коэффициентами.
Требуется представить заданное число P в виде суммы трех биномиальных коэффициентов:
P=Ca1+Cb2+Cc3, 0≤a<b<c
№42 слайд
Содержание слайда: Задача 5. «Разбиение числа»
Входной файл decomp.in:
Входной файл содержит единственное число P (1 ≤ P ≤ 1018).
Формат выходного файла decomp.out:
В выходной файл выводится искомые числа a, b, c (0 ≤ a < b < c), разделённые пробелами. Если задача не имеет решения, выведите три нуля.
Примеры:
№43 слайд
Содержание слайда: Задача 5. «Разбиение числа»
Сначала определим, как вычислять значения
Ca1, Cb2 и Cc3:
Ca1=a!/(1! (a-1)!)=a,
Cb2=b!/(2!(b-2)!)=b(b-1)/2,
Cc3=c!/(3!(c-3)!)=c(c-1)(c-2)/6.
Найдем наибольшее значение c, для которого значение Cc3 меньше введенного числа p.
Для этого используем функцию fc, реализующую бинарный поиск в диапазоне от 2 до 2000000.
Аналогично в диапазоне от 1 до 2000000
ищем наибольшее значение b, для которого
Cb2 ≤ p - Cc3 (функция fb).
Находим a = p - Cc3 – Cb2 .
№44 слайд
Содержание слайда: Задача 5. «Разбиение числа»
var
p, s, n, i, a, b, c : int64;
f_in, f_out : text;
function fc(x:int64):int64;
var min, max, s : int64;
begin
min:=2; max:=2000000;
while max-min>1 do
begin
s:=(max+min) div 2;
if s*(s-1)*(s-2) div 6>x then max:=s else min:=s
end;
fc:=min;
end;
№47 слайд
Содержание слайда: Задача 6. «НОК»
Наименьшим общим кратным (НОК) нескольких чисел называется наименьшее натуральное число, которое делится на каждое из этих чисел.
Заданы два числа N и K. Требуется найти набор
из N различных натуральных чисел, наименьшее общее кратное которых равняется K.
Среди всех этих чисел не должно быть единицы и самого числа K.
№48 слайд
Содержание слайда: Задача 6. «НОК»
Входной файл lcm.in:
В первой строке входного файла записаны через пробел два числа N и K (1 ≤ N ≤ 1000, 1 ≤ K ≤ 109).
Выходной файл lcm.out:
В выходной файл в первой строке выводится искомый набор из N чисел, разделённых пробелами.
Если Вы смогли найти несколько наборов, то выведите любой из них.
Если требуемого набора не существует, тогда выведите -1.
№50 слайд
Содержание слайда: Задача 6. «НОК»
На 1-м этапе исходное число K разложим
на простые множители: K=p1α1∙p2α2∙…∙ptαt.
При этом простые делители p1, p2, …, pt будем хранить в массиве P, а количество таких делителей α1, α2, …, αt – в массиве KP.
Определим общее количество делителей:
r=(α1+1)(α2+1)…(αt+1)-2
Если окажется, что r<n (или t<2 или n=1), то выводим -1.
В противном случае переходим ко 2-му этапу.
№51 слайд
Содержание слайда: Задача 6. «НОК»
Вычислим и выведем два числа: d1=ptαt (произведение всех наибольших простых делителей) и d2=K div p1.
В вспомогательный массив a запишем все степени первого простого делителя p1. При этом запомним позицию в массиве, где закончились эти числа.
Все степени второго простого делителя p2 также запишем в массив a. Кроме того, туда же запишем все произведения этих степеней на все числа, ранее записанные в массив. При этом снова запомним конечную позицию в массиве.
Эти же действия повторим для всех остальных простых делителей.
№53 слайд
Содержание слайда: Задача 6. «НОК»
const
maxp=1000000;
var
n, i, k, m, x, t, j, r, q, d, qq, l, d1, d2, kd : longint;
p, kp : array[1..maxp] of longint;
a : array[1..1000] of int64;
f_in,f_out:text;
begin
assign(f_in,'lcm2.in'); reset(f_in);
read ln(f_in,n,k); close(f_in);
for i:=1 to maxp do kp[i]:=0;
№56 слайд
Содержание слайда: Задача 6. «НОК»
r:=1; for i:=1 to t do r:=r*(kp[i]+1);
r:=r-2;
assign(f_out,'lcm.out'); rewrite(f_out);
if (t<2) or (r<n) or (n=1)
then write(f_out,-1)
else begin
d1:=1; for j:=1 to kp[t] do d1:=d1*p[i];
d2:=k div d1;
write(f_out,d1,' ',d2,' ');
kd:=2;
if kd=n then begin
close(f_out); halt
end;
Скачать все slide презентации Районная олимпиада по программированию одним архивом:
-
Автономное управление шаговым агентом. Олимпиада по программированию
-
Олимпиадные задачи. Динамическое программирование
-
Олимпиадное программирование
-
Кружок «Олимпиадное программирование»
-
Десятая Всероссийская командная олимпиада школьников по программированию
-
Индивидуальная олимпиада по информатике и программированию. Очный тур
-
XVIII Командная олимпиада школьников Санкт-Петербурга по информатике и программированию. Разбор задач
-
Язык программирования Паскаль. Основные понятия
-
Язык программирования Паскаль. Организация ввода и вывода данных
-
Язык программирования Turbo Pascal