Решения задач С4 по информатике - ФОРУМ ПОСТУПИМ.РУ
Главная
Поиск репетитора
Коллективный блог
публикаций
Форум (обсуждаем ЕГЭ 2020)
тем и сообщений
Для учебы




Войти
или
Зарегистрироваться
Новые сообщения · Участники · Правила форума · Поиск по форуму · RSS
  • Страница 1 из 1
  • 1
Архив - только для чтения
ФОРУМ ПОСТУПИМ.РУ » АРХИВ (ТОЛЬКО ДЛЯ ЧТЕНИЯ) » ЕГЭ 2013 по ИНФОРМАТИКЕ, БИОЛОГИИ, ХИМИИ и ГЕОГРАФИИ » Решения задач С4 по информатике
Решения задач С4 по информатике
push23Дата: Суббота, 2013-04-20, 1:00 PM | Сообщение # 1
Студент
Группа: Пользователи
Сообщений: 67
Репутация: 25
Награды: 1
Замечания: 0%
Статус: Offline
Привет Всем! До ЕГЭ осталось не так много времени, а с С4 еще возникают проблемы, поэтому решено решать как можно больше задачек из этого блока. Здесь я буду публиковать все решенные задачи.

Начну с классики 2012 года (чуть усложнено)
Условие задачи:
Цитата
Посредством радиотелескопа пытаются получать и анализировать сигналы из
космоса. Различные шумы переводятся в последовательность целых (как
положительных, так и отрицательных) чисел. Для того чтобы
характеризовать различные участки космоса, данные, получаемые из одного
района, было решено характеризовать максимальным произведением
значений четырех сигналов, приходящих из этого района.

Вам предлагается написать эффективную, в том числе по используемой
памяти, программу (укажите используемую версию языка
программирования, например Borland Pascal 7.0), которая будет
обрабатывать результаты, приходящие из одного района, находя искомую
величину. Следует учитывать, что из одного района может приходить очень
много данных, но не может быть меньше четырех чисел.

На вход программе в первой строке подаётся количество сигналов N.
В каждой из последующих N строк записано одно целое число, по
абсолютной величине не превышающее 100.
Пример входных данных:
+10
+30
+8
+12
-19
-7
+10
+30
-1
0
-5
Программа должна вывести характеристику сигналов из данного района
космоса – одно число, равное максимальному произведению четырех элементов
последовательности чисел.
Пример выходных данных для приведенного выше примера входных данных:
108000


Решение на PascalABC.NET:
Код
var min1, min2, min3, min4, max1, max2, max3, max4, N, i, x: integer;
begin
    readln(N);
    max1 := -101;   
    min1 := 101;   
    for i := 1 to N do
    begin
      read(x);
      if x >= max1 then   
      begin
        max4:=max3;
        max3:=max2;
        max2:=max1;
        max1:=x;
      end   
      else if x >= max2 then   
      begin
        max4:=max3;
        max3:=max2;
        max2:=x;
      end       
      else if x >= max3 then   
      begin
        max4:=max3;
        max3:=x;
      end           
      else if x > max4 then max4:=x;
      if x <= min1 then   
      begin
        min4:=min3;
        min3:=min2;
        min2:=min1;
        min1:=x;
      end
      else if x <= min2 then   
      begin
        min4:=min3;
        min3:=min2;
        min2:=x;
      end
      else if x <= min3 then   
      begin
        min4:=min3;
        min3:=x;
      end           
      else if x < min4 then min4:=x;      
    end;
   if (max1*max2*max3*max4) > (min1*min2*min3*min4) then
    writeln(max1*max2*max3*max4)
   else
    writeln(min1*min2*min3*min4);   
end.
Прикрепления: max_4x.pas(2.3 Kb)


EGE 2013: МА: 87 + ИНФ: 88 + РУ: 70 + ФИ: 65 = 245, 222

Сообщение отредактировал push23 - Суббота, 2013-04-20, 1:44 PM
 
push23Дата: Суббота, 2013-04-20, 1:43 PM | Сообщение # 2
Студент
Группа: Пользователи
Сообщений: 67
Репутация: 25
Награды: 1
Замечания: 0%
Статус: Offline
Обратная задача

Условие задачи
Цитата
С помощью радиотелескопа пытаются получать и анализировать сигналы из
космоса. Различные шумы переводятся в последовательность целых (как
положительных, так и отрицательных) чисел. Для того чтобы
характеризовать различные участки космоса, данные, получаемые из одного
района, было решено характеризовать минимальным произведением
значений двух сигналов, приходящих из этого района.
Вам предлагается написать эффективную, в том числе по используемой
памяти, программу (укажите используемую версию языка
программирования, например Borland Pascal 7.0), которая будет
обрабатывать результаты, приходящие из одного района, находя искомую
величину. Следует учитывать, что из одного района может приходить очень
много данных, но не может быть меньше двух чисел.
Перед текстом программы кратко опишите используемый Вами алгоритм
решения задачи.
На вход программе в первой строке подаётся количество сигналов N.
В каждой из последующих N строк записано одно целое число
(положительное или отрицательное), по абсолютной величине не
превышающее 10 000.
Пример входных данных:
6
2540
10
541
2301
10
3500
Пример выходных данных для приведенного выше примера входных данных:
100

Программа должна вывести характеристику сигналов из данного района
космоса – одно число, равное минимальному произведению двух элементов
последовательности чисел.


Решение на Pascal.ABC.NET:
Код
var min1, min2, max1, max2,product, N, i, x: integer;
begin
        readln(N);
        max1 := -10001;       
        min1 := 10001;       
        for i := 1 to N do
        begin
          readln(x);
          if x >= max1 then       
          begin
            max2:=max1;
            max1:=x;
          end       
          else if x > max2 then max2:=x;
          if x <= min1 then       
          begin
            min2:=min1;
            min1:=x;
          end       
          else if x < min2 then min2:=x;          
        end;
       if (max1*max2) < (min1*min2) then
          product:=max1*max2
       else
          product:=min1*min2;
       if max1*min1 < product then product:=max1*min1;        
       writeln(product);        
end.
Прикрепления: Min_2x.pas(0.6 Kb)


EGE 2013: МА: 87 + ИНФ: 88 + РУ: 70 + ФИ: 65 = 245, 222

Сообщение отредактировал push23 - Суббота, 2013-04-20, 1:47 PM
 
push23Дата: Понедельник, 2013-04-22, 1:37 PM | Сообщение # 3
Студент
Группа: Пользователи
Сообщений: 67
Репутация: 25
Награды: 1
Замечания: 0%
Статус: Offline
Еще одна, сначала казалась сложной smile

Условие задачи
Цитата
По каналу связи передается последовательность положительных целых чисел , … все числа не превышают 1000, их количество заранее неизвестно. Каждое число передается в виде отдельной текстовой строки, содержащей десятичную запись числа. Признаком конца передаваемой последовательности является число 0. Участок последовательности от элемента до элемента называется подъемом, если на этом участке каждое следующее число больше предыдущего. Высотой подъема называется разность . Напишите эффективную программу, которая вычисляет наибольшую высоту среди всех подъемов последовательности. Если в последовательности нет ни одного подъема, программа выдает 0. Программа должна напечатать отчет по следующей форме:
Получено ... чисел Наибольшая высота подъема: …
Размер памяти, которую использует Ваша программа, не должен зависеть от длины переданной последовательности чисел.
Перед текстом программы кратко опишите используемый вами
алгоритм решения задачи.
Пример входных данных:
144
17
27
3
7
9
11
10
0
Пример выходных данных для приведенного выше примера входных данных:
Получено 8 чисел
Наибольшая высота подъема: 10


Решение на Pascal.ABC.NET:
Код
var rise, rise_m, start, last, x, sum:integer;
begin
       rise:=0; rise_m:=0;
       readln(x); start:=x; last:=x; readln(x); sum:=1;
       while x <> 0 do begin
         inc(sum);
         if x > last then
           rise:=x-start
         else begin
           start:=x;
           if rise > rise_m then rise_m:=rise
         end;
         last:=x;
         readln(x)
       end;
       writeln('Получено ', sum, ' чисел');
       if rise_m > rise then writeln('Наибольшая высота подъема: ', rise_m)
       else writeln('Наибольшая высота подъема: ', rise);      
end.


Добавлено (2013-04-22, 1:35 PM)
---------------------------------------------
Задачка с последней диагностики. Много кода получилось.

Условие задачи:


Решение на PascalABC.NET:
Код
var      
       i, x, y, N, K, t: integer;
       ctv,Ax, Ay, R, A_sum : array [1..4] of integer;
Begin
       Write('Введите кол-во точек: ');
       Readln(N);
       Writeln('Введите координаты ',N,' точек: ');
       for i:=1 to N do      
       begin
         readln(x,y);
         if (x>0) and (y>0) then
         begin
           inc(ctv[1]);
           if A_sum[1] < (abs(x)+abs(y)) then      
           begin      
             A_sum[1]:= abs(x)+abs(y);
             Ax[1]:=x; Ay[1]:=y;
             if abs(x) > abs(y) then R[1]:=abs(x)
             else R[1]:=abs(y)
           end;
         end
         else if (x<0) and (y>0) then
         begin
           inc(ctv[2]);
           if A_sum[2] < (abs(x)+abs(y)) then      
           begin      
             A_sum[2]:= abs(x)+abs(y);
             Ax[2]:=x; Ay[2]:=y;
             if abs(x) > abs(y) then R[2]:=abs(x)
             else R[2]:=abs(y)
           end;
         end
         else if (x<0) and (y<0) then
         begin
           inc(ctv[3]);
           if A_sum[3] < (abs(x)+abs(y)) then      
           begin      
             A_sum[3]:= abs(x)+abs(y);
             Ax[3]:=x; Ay[3]:=y;
             if abs(x) > abs(y) then R[3]:=abs(x)
             else R[3]:=abs(y)
           end;
         end
         else if (x>0) and (y<0) then
         begin
           inc(ctv[4]);
           if A_sum[4] < (abs(x)+abs(y)) then      
           begin      
             A_sum[4]:= abs(x)+abs(y);
             Ax[4]:=x; Ay[4]:=y;
             if abs(x) > abs(y) then R[4]:=abs(x)
             else R[4]:=abs(y)
           end;
         end;
       end;
       t:=maxint;       
       if (ctv[1] <> 0) and (ctv[1] < t) then      
       begin
         t:=ctv[1];
         K:=1
       end;       
       if (ctv[2] <> 0) and (ctv[2] < t) then
       begin
         t:=ctv[2];
         K:=2
       end
       else if t = ctv[2] then
         begin
           if R[2] > R [K]then K:=2      
         end;
       if (ctv[3] <> 0) and (ctv[3] < t) then
       begin
         t:=ctv[3];
         K:=3
       end
       else if t = ctv[3] then
         begin
           if R[3] > R [K]then K:=3      
         end;
       if (ctv[4] <> 0) and (ctv[4] < t) then
       begin
         t:=ctv[4];
         K:=4
       end
       else if t = ctv[4] then
         begin
           if R[4] > R [K]then K:=4      
         end;
       Writeln('K = ',K);
       Writeln('M = ',ctv[K]);
       Writeln('A = (',Ax[K],', ',Ay[K],')');
       Writeln('R = ',R[K]);
End.
Прикрепления: max_rise.pas(1.6 Kb) · 6411822.jpg(146.7 Kb)


EGE 2013: МА: 87 + ИНФ: 88 + РУ: 70 + ФИ: 65 = 245, 222

Сообщение отредактировал push23 - Понедельник, 2013-04-22, 1:39 PM
 
tooqДата: Понедельник, 2013-04-29, 10:15 PM | Сообщение # 4
Студент
Группа: Пользователи
Сообщений: 89
Репутация: 6
Награды: 0
Замечания: 0%
Статус: Offline
push23, реши задачу с последнего пробника, там где таблица очков игры

Математика - ? (будет 85)
Русский язык - ? (будет 85)
Информатика - ? (будет 100)
 
luvteaДата: Суббота, 2013-05-04, 7:28 PM | Сообщение # 5
Студент
Группа: Пользователи
Сообщений: 36
Репутация: 0
Награды: 0
Замечания: 0%
Статус: Offline
Цитата (tooq)
реши задачу с последнего пробника, там где таблица очков игры
Которая "Тетрис-онлайн" ?


СПбГУ '17 ПМ-ПУ
 
se95Дата: Понедельник, 2013-05-06, 5:31 PM | Сообщение # 6
Абитуриент
Группа: Пользователи
Сообщений: 2
Репутация: 0
Награды: 0
Замечания: 0%
Статус: Offline
Присоединяйтесь http://skladchik.com

Сообщение отредактировал se95 - Понедельник, 2013-05-06, 5:37 PM
 
JustViktoriyaДата: Понедельник, 2013-05-27, 10:34 PM | Сообщение # 7
Абитуриент
Группа: Пользователи
Сообщений: 1
Репутация: 0
Награды: 0
Замечания: 0%
Статус: Offline
Здравствуйте.
Вопрос по формулировке второй задачи. Ничего, что там сказано "минимальное произведение сигналов"? Просто я так прикинула, исходя из алгоритма, min1 и min2, а также max1 и max2 могут быть одновременно положительными или отрицательными числами, тогда их произведение - положительное число. Что, при наличии в последовательности положительных и отрицательных чисел, неверно, поскольку минимальное произведение в данном случае будет отрицательным числом. Не лучше ли найти минимум среди отрицательных и максимум среди положитеьльных и перемножить? Или я что-то не поняла в условии?
 
prm2008Дата: Вторник, 2013-05-28, 2:39 AM | Сообщение # 8
Профессор
Группа: Проверенные
Сообщений: 815
Репутация: 1199
Награды: 64
Замечания: 0%
Статус: Offline
Да, ты правильно поняла условия. Если числа разных знаков, то мах произведение - двух чисел с мах модулями и одинаковыми знаками, а мин - произведение с разными знаками и мах модулями. Если знаки одинаковые, то это произведение двух мин и двух мах. Т.е. кроме первого минимума надо найти второй, с мах аналогично.

...чтобы оставаться на одном месте нужно все время двигаться вперед...
 
AmsaredocДата: Вторник, 2013-05-28, 1:30 PM | Сообщение # 9
Магистр
Группа: Проверенные
Сообщений: 211
Репутация: 15
Награды: 5
Замечания: 0%
Статус: Offline
Цитата
укажите используемую версию языка программирования, например, Borland Pascal 7.0

народ! кто знает что писать?ЕГЭ пишу на Си (компилятор GCC)


План Р+М+И+Ф=400, получилось - 367, средний балл - 91,75 (Дневник)
 
push23Дата: Вторник, 2013-05-28, 4:21 PM | Сообщение # 10
Студент
Группа: Пользователи
Сообщений: 67
Репутация: 25
Награды: 1
Замечания: 0%
Статус: Offline
Цитата (Amsaredoc)
народ! кто знает что писать?ЕГЭ пишу на Си (компилятор GCC)

пиши язык, название и версию компилятора

Вот задачка:
Цитата
На вход программе подается целое десятичное число, длина которого заранее неизвестна. Требуется написать программу, которая выводит это число в двоичном и шестнадцатеричном представлении.
Пример входных данных:
1000000
Программа должна вывести:
Число в двоичной системе счисления: 11110100001001000000
Число в шестнадцатеричной системе счисления: F4240


Решение на PascalABC.NET:
Цитата
Var
x,er,ints :integer;
tt,num,temp :string;
function numbers(n: integer): string;
begin
case n of
0000: Result := '0';
0001: Result := '1';
0010: Result := '2';
0011: Result := '3';
0100: Result := '4';
0101: Result := '5';
0110: Result := '6';
0111: Result := '7';
1000: Result := '8';
1001: Result := '9';
1010: Result := 'A';
1011: Result := 'B';
1100: Result := 'C';
1101: Result := 'D';
1110: Result := 'E';
1111: Result := 'F';
end;
end;

begin
writeln('Введите число в десятичной с-сч:');
readln(ints);
while ints > 0 do begin
if ints mod 2 <> 0 then tt:='1'+tt
else tt:='0'+tt;
ints:= ints div 2;
end;
writeln('Число в двоичной системе счисления: ',tt);
while (length(tt) > 4) do begin
temp:=Copy (tt, length(tt)-3, 4);
delete(tt, length(tt)-3, 4);
Val (temp, x, er);
num:=numbers(x)+num;
end;
Val (tt, x, er);
num:=numbers(x)+num;
writeln('Число в шестнадцатеричной системе счисления: ',num);
end.


EGE 2013: МА: 87 + ИНФ: 88 + РУ: 70 + ФИ: 65 = 245, 222

Сообщение отредактировал push23 - Вторник, 2013-05-28, 4:22 PM
 
luvteaДата: Вторник, 2013-05-28, 4:45 PM | Сообщение # 11
Студент
Группа: Пользователи
Сообщений: 36
Репутация: 0
Награды: 0
Замечания: 0%
Статус: Offline
Цитата (push23)
case n of
0000: Result := '0';
0001: Result := '1';
0010: Result := '2';
0011: Result := '3';
0100: Result := '4';
0101: Result := '5';
0110: Result := '6';
0111: Result := '7';
1000: Result := '8';
1001: Result := '9';
1010: Result := 'A';
1011: Result := 'B';
1100: Result := 'C';
1101: Result := 'D';
1110: Result := 'E';
1111: Result := 'F';

Охлол
А по-другому никак совсем, да ?


СПбГУ '17 ПМ-ПУ
 
push23Дата: Вторник, 2013-05-28, 5:09 PM | Сообщение # 12
Студент
Группа: Пользователи
Сообщений: 67
Репутация: 25
Награды: 1
Замечания: 0%
Статус: Offline
luvtea, Никак biggrin
Мне просто быстро нужно было написать эту программку, вот и не заморачивался)


EGE 2013: МА: 87 + ИНФ: 88 + РУ: 70 + ФИ: 65 = 245, 222
 
copralДата: Вторник, 2013-05-28, 5:49 PM | Сообщение # 13
Абитуриент
Группа: Пользователи
Сообщений: 1
Репутация: 0
Награды: 0
Замечания: 0%
Статус: Offline
Город: Казань
Цитата
push23, реши задачу с последнего пробника, там где таблица очков игры
 
 тоже интересно
 
push23Дата: Вторник, 2013-05-28, 6:14 PM | Сообщение # 14
Студент
Группа: Пользователи
Сообщений: 67
Репутация: 25
Награды: 1
Замечания: 0%
Статус: Offline
Цитата (tooq)
push23, реши задачу с последнего пробника, там где таблица очков игры


У нас не проводятся пробники от МИОО. Скиньте сюда условие, попробую


EGE 2013: МА: 87 + ИНФ: 88 + РУ: 70 + ФИ: 65 = 245, 222

Сообщение отредактировал push23 - Вторник, 2013-05-28, 6:15 PM
 
ФОРУМ ПОСТУПИМ.РУ » АРХИВ (ТОЛЬКО ДЛЯ ЧТЕНИЯ) » ЕГЭ 2013 по ИНФОРМАТИКЕ, БИОЛОГИИ, ХИМИИ и ГЕОГРАФИИ » Решения задач С4 по информатике
  • Страница 1 из 1
  • 1
Поиск:






© 2006-2019 Поступим.ру Информация:
О проекте
Контакты

Регистрация на сайте
Статистика сообщества
Пользовательское соглашение
Разделы:
Поиск репетитора
Форум сообщества
Коллективный блог
Материалы для учебы
RSS:
RSS форума
RSS блога