Social Icons

Featured Posts

суббота, 21 июня 2014 г.

Информатика и ИКТ - ЕГЭ 2014 (C4)

Довольно интересная задача С4 попалась в этом году в ЕГЭ по информатике и ИКТ. И, хотя, она оказалась проще, чем ряд задач прошлых лет, некоторые столкнулись с определенными трудностями при ее решении.
Приведу один из возможных эффективных способов ее решения.

Условие (примерное)
Спутник передает данные на землю, посылая их каждую минуту. Данные подаются в формате целого числа от 0 до 1000, количество значений не превышает 10000. Найти максимальное произведение значений, разница между которыми составляет не менее 7 минут.

Решение (Паскаль)
program c4;

const
  N_MAX = 1000; // Правая граница чисел
  MINS = 7; // Минимальное кол-во минут между данными
  D_C = 4; // кол-во символов под форматный вывод
  
var
  Data: array[1..MINS] of Real;
  i, j, N: Integer;
  max, maxPro: Real;

begin
  Write('N = '); Readln(N);
  
  randomize;
  for i := 1 to MINS do
  begin
    Data[i] := random(N_MAX + 1);
    Write(Data[i]:D_C:1, ' ');
  end;
    
  max := 0;
  maxPro := 0;
  for i := MINS + 1 to N do
  begin
    if Data[1] > max then
      max := Data[1];
      
    for j := 1 to MINS - 1 do
      Data[j] := Data[j + 1];
    Data[MINS] := random(N_MAX + 1);
    Write(Data[MINS]:D_C:1, ' ');
      
    if max * Data[MINS] > maxPro then
      maxPro := max * Data[MINS];
  end;
  
  Writeln;
  Writeln('Максимальное произведение = ', maxPro:D_C:1);
  
  readln;
end.
Краткие пояснения:
  { 
  * Алгоритм решения:
  * 
  * max - максимальное число в последовательности
  * maxPro - максимальное произведение
  * 
  * Первые MINS чисел заносим в массив
  * Далее:
  * 1) определяем max из первого элемента; 
  * 2) добавляем новый элемент в конец массива, предварительно сдвинув его
  *    на 1 элемент влево (1-й элемент больше не нужен, если там был max, мы его запомнили)
  * 3) определяем максимальное произведение из max и введенного эл-та (a[MINS])
  *    (соблюдая расстояние в MINS минут);
  * 
  * В программе ввод чисел реализован через генератор случайных чисел,
  * и может быть заменен на ручной ввод
  * }

Решение (Питон 3+)
import random, queue

N_MAX = 1000 
MINS = 7 
D_C = 4 

N = int(input('N = '));
  
# Используем очередь, поэтому перестановки далее будут лишними
# Можно использовать и списки - выбирайте сами
Data = queue.Queue(MINS)
for _ in range(MINS):
    Item = random.randint(0, N_MAX)
    Data.put(Item)
    print('{0:{D_C}.1f}'.format(Item, D_C = D_C), end = ' ')
 
maxItem = 0
maxPro = 0
for _ in range(MINS + 1, N + 1):
    Item = Data.get()
    if Item > maxItem:
        maxItem = Item
  
    Item = random.randint(0, N_MAX)
    Data.put(Item)
    print('{0:{D_C}.1f}'.format(Item, D_C = D_C), end = ' ')
  
    if maxItem * Item > maxPro:
        maxPro = maxItem * Item
        
print('\nМаксимальное произведение = {0:{D_C}.1f}'.format(maxPro, D_C = D_C), end = ' ')

input

Скриншот

Если у кого-нибудь есть более светлые идеи - предлагайте в комментариях.

воскресенье, 19 января 2014 г.

Технология уничтожения

Всё прогрессивное человечество, как нам говорят, абсолютно естественным образом приняло геев, их субкультуру, их право заключать браки, усыновлять детей и пропагандировать свою сексуальную ориентацию в школах и детских садах. Нам говорят, что всё это — естественный ход вещей.

Нам лгут.

среда, 25 сентября 2013 г.

Что бы сделали мы с Delphi XE5/XE6... - подводим итоги

С некоторым запозданием подводим обещанные итоги летнего опроса.

Вот, пятерка пожеланий-победителей:
  1. Исправить баги и "тормоза" в QC, в т.ч. переходящие от версии к версии (13).
  2. Выпустить Delphi-Express, литературу по новым возможностям и современному состоянию языка/среды, в т.ч. на глубоком уровне; оптимизировать и повысить скорость исполняемых файлов; сделать компилятор под Linux (6).
  3. Улучшить справочную систему (быстродействие, содержание) (5).
  4. Снизить цены на Delphi/RAD Studio; усовершенствовать IDE (4).
  5. Значительно расширить компонентную базу, добавить полноценные компоненты, а не урезанные версии, исправить существующие (например, TBalloonHint или Ribbon); провести качественный рефакторинг и нативные компоненты в FM; улучшить стабильность и скорость среды (3).
В скобках указано количество голосов, полученное путем группировки мнений авторов. В случае, если одно и тоже количество голосов набирало несколько позиций - им присваивалось одно и тоже место, а сами позиции разделялись точкой с запятой.

В пятерке явно выделяется желание увидеть пофикшеные баги, остальные пункты обладают примерно одинаковой степенью влияния. Наиболее неожиданным для меня является появление в топе наличия компилятора под Linux.

Остальные пожелания, в авторской редакции, оставляю на прочтение в комментариях к оригинальному посту.

воскресенье, 4 августа 2013 г.

Numerics для Delphi & FPC (работа с большими числами)

Сергей Касандров выпустил довольно интересный модуль для работы с большими числами в Delphi и FreePascal (сделано на чистом Паскале, без оптимизаций) - новость и архив. В архиве содержится исходный код модуля, а также тестовый проект и скомпилированные dll (32- и 64-битные).

вторник, 23 июля 2013 г.

CnPack IDE-Мастер: подсветка операторов управления потоком выполнения

В меню CnPack -> Настройки IDE-расширений -> Подсветка синтаксиса появилась новая опция - "Выделять операторы упр. потоком выполнения":
При включенной опции такие конструкции как Exit/Abort/Break/Continue/Raise будут выделены:

Поделитесь с друзьями!

 

Подписчики

Статистика