- Главная
- Информатика
- Программирование. Подготовка к ЕГЭ. Часть 2
Содержание
- 2. В телевизионном танцевальном марафоне с определением победителя с помощью телезрителей после каждого тура объявляется sms-голосование, в
- 3. Program z1; var A:array[1..16] of integer; N,i,j,max,k:integer; Begin readln (N); for i:=1 to N do a[k]:=0;
- 4. Вам предлагается два задания с похожими условиями: задание А и задание Б. Вы можете решать оба
- 5. Program z1; var n,i,j,sum,min,max,a,b,min_rz:integer; Begin readln (N); sum:=0; min_rz:=100000; for i:=1 to N do begin readln(a,b);
- 7. Скачать презентацию
Слайд 2
В телевизионном танцевальном марафоне с определением победителя с помощью телезрителей после
В телевизионном танцевальном марафоне с определением победителя с помощью телезрителей после
каждого тура объявляется sms-голосование, в котором зрители указывают наиболее понравившуюся им пару из максимум 16 пар, которые участвуют в проекте. Вам предлагается написать программу, которая будет обрабатывать результаты sms-голосования по данному вопросу. Результаты голосования получены в виде номеров пар (каждый элемент списка соответствует одному sms-сообщению).
Следует учитывать, что количество голосов в списке может быть очень велико. Перед текстом программы кратко опишите используемый Вами алгоритм решения задачи. На вход программе в первой строке подаётся количество пришедших sms-сообщений N. В каждой из последующих N строк записан номер пары от 1 до 16.Пример входных данных:
4
2
16
3
2
Программа должна вывести список всех пар, встречающихся в списке, в порядке убывания (не возрастания) количества голосов, отданных за ту или иную пару, с указанием количества отданных за неё голосов. При этом каждая пара должна быть выведена ровно один раз вне зависимости от того, сколько раз она встречается в списке. Пример выходных данных для приведённого выше примера входных данных:
2 2
3 1
16 1
Следует учитывать, что количество голосов в списке может быть очень велико. Перед текстом программы кратко опишите используемый Вами алгоритм решения задачи. На вход программе в первой строке подаётся количество пришедших sms-сообщений N. В каждой из последующих N строк записан номер пары от 1 до 16.Пример входных данных:
4
2
16
3
2
Программа должна вывести список всех пар, встречающихся в списке, в порядке убывания (не возрастания) количества голосов, отданных за ту или иную пару, с указанием количества отданных за неё голосов. При этом каждая пара должна быть выведена ровно один раз вне зависимости от того, сколько раз она встречается в списке. Пример выходных данных для приведённого выше примера входных данных:
2 2
3 1
16 1
Слайд 3
Program z1;
var A:array[1..16] of integer;
N,i,j,max,k:integer;
Begin
readln (N);
for i:=1 to N
Program z1;
var A:array[1..16] of integer;
N,i,j,max,k:integer;
Begin
readln (N);
for i:=1 to N
do
a[k]:=0;
for i:=1 to N do
begin
readln (k);
a[k]:=a[k]+1;
end;
max:=a[1];
for i:=2 to 16 do
if a[i]>max then max:=a[i];
for j:=max downto 1 do
for i:=1 to 16 do
if A[i]=j then
writeln (i,a[i]);
End.
a[k]:=0;
for i:=1 to N do
begin
readln (k);
a[k]:=a[k]+1;
end;
max:=a[1];
for i:=2 to 16 do
if a[i]>max then max:=a[i];
for j:=max downto 1 do
for i:=1 to 16 do
if A[i]=j then
writeln (i,a[i]);
End.
Слайд 4
Вам предлагается два задания с похожими условиями: задание А и задание
Вам предлагается два задания с похожими условиями: задание А и задание
Б. Вы можете решать оба задания или одно из них по своему выбору. Задание Б более сложное, его решение оценивается выше.
Задание. Имеется набор данных, состоящий из пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел не делилась на 3 и при этом была максимально возможной. Если получить требуемую сумму невозможно, в качестве ответа нужно выдать 0.
Напишите программу для решения этой задачи.
Постарайтесь сделать программу эффективной по времени и используемой памяти (или хотя бы по одной из этих характеристик).
Программа считается эффективной по времени, если время работы программы пропорционально количеству пар чисел N, т. е. при увеличении N в k раз время работы программы должно увеличиваться не более чем в k раз.
Программа считается эффективной по памяти, если размер памяти, использованной в программе для хранения данных, не зависит от числа N и не превышает 1 килобайта.
Максимальная оценка за правильную программу, эффективную по времени и памяти, — 4 балла.
Максимальная оценка за правильную программу, эффективную по времени, но неэффективную по памяти, — 3 балла.
На вход программе в первой строке подаётся количество пар N (1 ≤ N ≤ 100 000). Каждая из следующих N строк содержит два натуральных числа, не превышающих 10 000.
Пример входных данных для варианта Б:
6
1 3 2 s=3+12+9+4+3+1=32 кратно трем!!!!
5 12 7 значит мы найдем самую маленькую разницу
6 9 3 между max и min, не кратную 3!!!
5 4 1 5-4=1!!!
3 3 0 Ответ: 33-1=32!!!
1 1 0
Пример выходных данных для приведённых выше примеров входных данных: 32
Задание. Имеется набор данных, состоящий из пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел не делилась на 3 и при этом была максимально возможной. Если получить требуемую сумму невозможно, в качестве ответа нужно выдать 0.
Напишите программу для решения этой задачи.
Постарайтесь сделать программу эффективной по времени и используемой памяти (или хотя бы по одной из этих характеристик).
Программа считается эффективной по времени, если время работы программы пропорционально количеству пар чисел N, т. е. при увеличении N в k раз время работы программы должно увеличиваться не более чем в k раз.
Программа считается эффективной по памяти, если размер памяти, использованной в программе для хранения данных, не зависит от числа N и не превышает 1 килобайта.
Максимальная оценка за правильную программу, эффективную по времени и памяти, — 4 балла.
Максимальная оценка за правильную программу, эффективную по времени, но неэффективную по памяти, — 3 балла.
На вход программе в первой строке подаётся количество пар N (1 ≤ N ≤ 100 000). Каждая из следующих N строк содержит два натуральных числа, не превышающих 10 000.
Пример входных данных для варианта Б:
6
1 3 2 s=3+12+9+4+3+1=32 кратно трем!!!!
5 12 7 значит мы найдем самую маленькую разницу
6 9 3 между max и min, не кратную 3!!!
5 4 1 5-4=1!!!
3 3 0 Ответ: 33-1=32!!!
1 1 0
Пример выходных данных для приведённых выше примеров входных данных: 32
Слайд 5
Program z1;
var
n,i,j,sum,min,max,a,b,min_rz:integer;
Begin
readln (N);
sum:=0;
min_rz:=100000;
for i:=1 to N
Program z1;
var
n,i,j,sum,min,max,a,b,min_rz:integer;
Begin
readln (N);
sum:=0;
min_rz:=100000;
for i:=1 to N
do
begin
readln(a,b); // ввод чисел в каждой паре
if a>b then // поиск максимального и минимального числа в каждой паре
begin
max:=a;
min:=b;
end
else
begin
max:=b;
min:=a;
end;
sum:=sum+max; // поиск максимальной суммы
if ((max-min) mod 3<>0) and ((max-min) min_rz:=max-min;
end;
if sum mod 3<>0 then writeln (sum) / полученная максимальная сумма, не кратна трем выводим ее
else // иначе отнимаем минимальную разницу
begin
sum:=sum-min_rz;
writeln (sum);
end;
End.
begin
readln(a,b); // ввод чисел в каждой паре
if a>b then // поиск максимального и минимального числа в каждой паре
begin
max:=a;
min:=b;
end
else
begin
max:=b;
min:=a;
end;
sum:=sum+max; // поиск максимальной суммы
if ((max-min) mod 3<>0) and ((max-min)
end;
if sum mod 3<>0 then writeln (sum) / полученная максимальная сумма, не кратна трем выводим ее
else // иначе отнимаем минимальную разницу
begin
sum:=sum-min_rz;
writeln (sum);
end;
End.
- Предыдущая
Д. Верди. РиголеттоСледующая -
Вводный противопожарный инструктаж