ФРТК
Rambler's Top100
Физтех-Портал
Письмо редакторамПочта ФРТКРасписание занятий Расписание экзаменовФорумКарта сайта
Поиск
  Разделы сайта

 Голосование
Нужны ли на сайте новости высоких технологий?

Да
Нет

Результаты
Архив голосований
 Материалы сервера
Версия для печати
Опубликовано: 28.02.2008

Секция А. Алгоритмические задачи


В этой секции предлагаются 8 задач на реализацию алгоритмов. Все задачи взяты из реальной жизни, хотя некоторые и имеют на первый взгляд сказочное условие. Для решения задач могут понадобиться не только знания и навыки, полученные в школе, но и дополнительная информация. В этом случае помогут многочисленные книги, Интернет. Не огорчайся, если сразу не сможешь решить задачу. Главное, упорство, терпение и логика мышления. Необходимо помнить, что важна не только победа но участие и приобретенный опыт, и если решить удалось не все задачи, присылай решения тех, которые получились.

Для написания программ можно воспользоваться следующими языками программирования: Pascal, C, C++, Java. Программа должна компилироваться без подключения дополнительных библиотек в одной из следующих сред:

Примечание:

Можно использовать только стандартные библиотеки. Описание стандартных библиотек для С\С++ можно найти на http://cppreference.com/.

Участникам необходимо прислать:

  • исходный код программ-решений;
  • пояснения к программам (описание алгоритмов) вместе с доказательством (аргументированными рассуждениями в произвольной форме) корректности применения использованных алгоритмов для решения конкретных задач;
  • по 5 тестов для проверки работоспособности каждой программы.

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

На выполнения каждого теста отводится не более 5 секунд (частота CPU — 1500МГц), при этом будет учитываться скорость выполнения программы.
В целях облегчения проверки просьба расположить задачи этой секции, согласно следующей структуре директорий:

  • /<FAMILIA>/ AUTHOR.TXT — личные данные участника,
  • /<FAMILIA>/SA/<AN>/<LANG>/ PROG.<LANG> — исходный текст программы (он должен быть размещен в 1 файле!),
  • /<FAMILIA>/SA/<AN>/DOCS/INFO.TXT — описание программы,
  • /<FAMILIA>/SA/<AN>/<LANG>/TESTS/IN<I>.TXT.

Здесь <FAMILIA> — фамилия участника, записанная латинскими буквами. <SA> - секция A. <AN> - номер задачи (A3 — например), <LANG> — язык программирования (PAS, C, CPP, JAVA), <I> — номер теста (соответственно 0..4).

Программа должна использовать для ввода всех данных файл INPUT.TXT; для вывода — OUTPUT.TXTв директории работы программы. Копирование тестов в нее будет производиться автоматически системой проверки. Для ввода-вывода использовать следующий код:

 










•Pascal:
     var fin:text;
     fout:text;
     begin
     Assign(fin,”INPUT.TXT”);
     Reset(fin);
     Assign(fout,”OUTPUT.TXT”);
     Rewrite(fout);
     { //ввод-вывод 
     Пример:
     read(fin,num);
     write(fout,num);
     }
     Close(fin); Close(fout);
     end.

•C: 
     FILE * fin = fopen(“INPUT.TXT”,”r”); 
     FILE * fout = fopen(“OUTPUT.TXT”,”w”); 
     // ввод-вывод 
     Пример: 
     int iVariable; float fVariable; 
     fscanf(fin, “%d %f”, &iVariable, &fVariable); 
     fprintf(fout,”%2d %4.2f”, iVariable, fVariable); 
     fclose(fin); fclose(fout);

•C++: 
     #include <fstream > 
     std::ifstream is(“INPUT.TXT”); 
     std::ofstream os(“OUTPUT.TXT”); 
     //ввод-вывод 
     Пример: 
     int iVariable; float fVariable; 
     is>>iVariable>>fVariable; os<<iVariable<<fVariable<<std::endl; 
     is.close(); 
     os.close();

•Java: 
     try{
     BufferedReader reader = new BufferedReader(new FileReader("INPUT.TXT"));
     BufferedWriter writer = new BufferedWriter(new FileWriter("OUTPUT.TXT"));
     int a = Integer.parseInt(reader.readLine());
     //ввод-вывод 
     Пример:
     String s = reader.readLine();
     writer.write(s + " " + a + "\n");
     reader.close();
     writer.close();
     } catch (IOException e) {
     throw new RuntimeException(e);
     }


Компиляция и запуск (Java) программ будет проводиться при помощи следующих команд:

     •Pascal: bpc.exe prog.pas 
     •C: gcc -o2 -std=c99 -o prog.exe prog.c
     •C++: gcc -lstdc++ -o2 -std=c++98 -o prog.exe prog.c
     •Java: javac Prog.java 
     java Prog

Каждая задача оценивается в 30 баллов: аргументация алгоритма решения – 10; за тестирование: 10 – за тесты, присланные участниками (оценивается как результат выполнения программой данного теста, так и грамотность составления тестов) и 10 баллов за прохождения тестов Оргкомитета.

 

Назад:
Памятка участника
Далее:
Задачи Секции А

наверх | на главную
 Discuss it
Add your comment
Author
Subject
Message
  • Ввод\вывод (Вихарев Алексей [85.25.138.222], 29.01.2008 14:07:37) #
    Обязательно ли использовать для ввода\вывода данных код, приведенный выше? Или этот код приведен как пример возможной реализации ввода\вывода? В частности, можно ли использовать буферизованный ввод\вывод на JAVA?
    • RE: Ввод\вывод (Евгений Хоров [193.125.143.206], 29.01.2008 20:26:12) #
      Нет, необязательно. Важно, чтобы имена файлов совпадали.
      • Язык (Алексей Кузин [217.175.24.145], 01.02.2008 17:02:04) #
        Обязательно оиспользовать выше приведенные языки или можно сделать задание,к примеру, в delphi 7?
        • STL (Толстиков Никита [88.215.163.121], 02.02.2008 11:26:03) #
          Можно использовать библиотеки STL в С++?
          • Re: Язык и STL (Евгений Хоров [194.85.82.139], 03.02.2008 16:04:47) #
            Delphi в секции А использовать нельзя. Далее мое мнение: В моем понимании, STL в С++ использовать можно (явных ограничений в правилах я не нашел). Однако, на мой взгляд, если ключевым алгоритмом в задаче являются, например, сортировка, работа с динамической памятью, то лучше написать все это самому. Это вам зачтется при оценке алгоритма решения задачи.
            • Компиляторы (Иван [78.36.121.2], 04.02.2008 16:11:51) #
              Турбо паскаль представляет всего лицшь 64 кб памяти. Этого не хватает для решения задач. Можно использовать free pascal, где памяти несколько больше?
              • Динамика (Мансурова Мария [77.43.212.132], 06.02.2008 12:16:32) #
                Можно использовать динамические переменные при решении задач секции А??
                • Re: Динамика (Евгений Хоров [193.125.143.206], 07.02.2008 19:50:10) #
                  Правила не запрещают использовать динамические переменные
                  • Re: компиляторы (Евгений Хоров [193.125.143.206], 07.02.2008 20:00:29) #
                    По поводу возможностей Паскаля - без комментариев. Авторы задач уверяют, что существуют решения для всех указанных компиляторов. Не нахожу ни одной задачи, где это было бы невозможным
                    • main (Таран Александр [85.28.2.54], 18.02.2008 10:58:35) #
                      Вопрос - какой тип главной функции в языке С? То есть можно так: void main(void){} или так: int main(void){return 0;} Вроде бы некоторые компилеры понимают только один вариант...
                      • Re: main (Парамонов Евгений [10.10.10.92], 19.02.2008 23:27:13) #
                        По стандарту ISO C90 тип возвращаемого значения функции main является тип int. B общем - это вопрос не по олимпиаде, поэтому лучше, если ответы на подобного рода вопросы участники будут находить самостоятельно.
                        • оформление (программистка [77.43.219.24], 21.02.2008 15:47:11) #
                          Можно для обоснования програм использовать Ворд, или можно писать только в Блокноте???
                          • Re: Оформление (Парамонов Евгений [10.10.10.92], 21.02.2008 22:22:07) #
                            Желательно использовать блокнот
                            • Ввод\вывод С/С++ (DOS, Windows): gcc v 3.4.4 (codeblocks-1.0rc2_mingw.exe); (zz [62.148.150.171], 26.02.2008 22:41:41) #
                              скачал компилятор попробовал рекомендуемый код •C++: #include <fstream > std::istream is(“INPUT.TXT”); std::ostream os(“OUTPUT.TXT”); так неработает std::ifstream is(“INPUT.TXT”); std::ofstream os(“OUTPUT.TXT”); а так работает. Это у вас ошибка или я что-то не так сделал?
                              • Re:Ввод\вывод С/С++ (DOS, Windows): gcc v 3.4.4 (codeblocks-1.0rc2_mingw.exe); (Парамонов Евгений [10.10.10.92], 28.02.2008 18:10:29) #
                                Вариант с использованием std::ifstream is(“INPUT.TXT”); std::ofstream os(“OUTPUT.TXT”); будет правильным. Спасибо, исправили.
                                • A6.Ограничение по длине имени в DOS (Жуков Алексей [92.124.2.81], 17.03.2008 21:03:24) #
                                  В задаче имя файла Knowledge.inc при решении в среде Turbo Pascal(Dos) не подходит, так как существует ограничение по длине имени(8 символов). Прошу это учесть и внести поправки в условие(сократить длину имени).
                                  • math.inc (zz [62.148.132.204], 19.03.2008 00:04:36) #
                                    можно в части а использовать мудуль #include <math.h> ?
                                    • оформление (zz [62.148.132.204], 19.03.2008 01:08:09) #
                                      а можно в описаниях прграмм использовать картинки?
                                      • Личные данные (alex [85.28.2.54], 18.03.2008 09:14:46) #
                                        Что указывать в "author.txt" ?
                                        • сроки (Vova [79.98.8.2], 18.03.2008 18:45:08) #
                                          В четверг еще можно будет на мыло послать?
                                          • щщщ (щщщщщщщщ [62.148.132.204], 19.03.2008 21:27:26) #
                                            оооотвееечааааайййтеее!!!!!!!!!
                                            • Внимание (Евгений Хоров [194.85.82.139], 20.03.2008 23:05:41) #
                                              Все участники турнира приславшие работы на данный момент должны получить подтверждение. Если вы не получили его, попробуйте следующее: 1) Выложите работу на сервер в интернете (http, ftp и т д) и сообщите в письме url 2) Попробуйте отправить еще раз, разбив вложение на более мелкие части. В связи с проблемами отправки работ, последний срок - 22 марта 22-00 МСК. Работы, присланные позже, будут оцениваться, но не будут участвовать в конкурсе.
                                              • Продление сроков олимпиады (Михаил [217.150.49.241], 20.03.2008 23:13:13) #
                                                Как всегда не хватало последнего дня для качественного оформления работ. Спасибо за добавленное время :)