Контрольная по информатике МФТИ 1-го курса 2007
Контрольная посвящена проверке вашего умения программированть на языке Си.
Тренировочный тур
Тренировочный тур предназначен для освоения с системой автоматической проверки. Электронная почта, укзываемая при регистрации никак не используется (можно указывать несуществующий адрес, например, unknown@unknown.un).
- Условия задач пробного тура
- Пробный тур
- Зарегистрируйте нового пользователя . Выберите русский язык, чтобы язык интерфейса был русский.
- В поле "Имя участника" укажите "Фамилия Имя Отчество".
- Запомните логин и пароль, который появится на странице после регистрации (большие и маленькие буквы имеют значение).
- Войдите в систему.
- Перейдите по ссылке "участвовать".
- Найдите в системе условия задач.
- На страницах с условиями задач внизу есть форма для посылки решений. Прикрепляйте исходный файл (с расширением .c) и жмите на кнопку "Послать".
- В верхнем меню есть ссылки "Итог" и "Мои посылки" на страницы, где можно узнать о результатах проверки.
- Вопросы по тому, как работать с системой, задавайте на форуме только во время пробного тура.
- Вопросы во время тура можно задавать с помощью системы сообщений, встроенную в систему автоматической проверки ejudge.
Контрольная работа
Для дополнительных контрольных (постоянно работающие контест)
Основные варианты контрольных (завершились):
Подсказки и замечания
- Во многих задачках удобно использовать тип
unsigned
, который может хранить целые числа из полуинтервала [0, 2^32) (это верно для компьютеров в наших учебных классах). Этому типу соответствует формат %u.
- Следите, чтобы время работы вашей программы не превысило 1 секунды на одном тесте. Можно грубо считать, что 10 млн. простых операций соответствует одной секунде. Оцените время работы своей программы (желательно экспериментально) на самых больших допустимых входных данных.
- Проверьте работы своей программы как минимум на 5 различных входных данных самостоятельно. Помните, что за неудачную посылку снимается 4 балла.
- Если вам пришел ответ, что ваше посланное решение неверно, то ваше решение действительно неверно с вероятностью 0.999.
- На данной контрольной во многих задачах можно обойтись без динамического выделения памяти, так как ограничения на входные данные заранее известно. Ваше умение динамически выделять память под массивы будет отдельно проверяться преподавателем во время сдачи следующего задания.
- Не нужно проверять корректность входных данных. Считайте, что входные данные удовлетворяют условиям, описанным в задаче.
- Число и тип пробельных символов, которые вы использовали для разделения чисел на выходе, не учитываются проверяющей системой в большинстве задач. Если вы получили "Неверный ответ" (Wrong Answer), то скорее всего ошибка в самом результате, а не в форматировании.
- Ошибки, связанные с неправильным форматированием, система обычно отмечает как "Presentation Error". Например, система ответит сообщением "Presentation Error", если в ответе ожидается число, а вы ничего не вывели или вывели что-то, что не может интерпретироваться как число.
Для тех, кто проверяет без участия автоматической системы
Для получения оценки 5 необходимо набрать 3 балла. Первые три задачи в каждом варианте
имеют ценность 1 балл, а четвёртая задача 2 балла.
Общая формула оценки оценки имеет вид
оценка = 2 + число баллов
Проверяющая система и критерии проверки
Некоторым группам будет предоставлена возможность воспользоваться автоматической проверяющей системой
(
http://acm.mipt.ru/twiki/bin/view/Cintro/CTestMIPT2007).
Каждый студент должен войти по ссылке на свой вариант контрольной работы.
Через Web-интерфейс системы можно будет отправлять
исходные файлы на языке Си на проверку.
Система автоматически скомпилирует их и запустит на нескольких тестовых входных данных.
Если все тесты пройдены успешно, то студент получит 50 или 100 очков.
Первые три задачи имеют ценность 50 очков, а последняя 100 очков.
Возможно частичное решение задачи, когда часть тестов пройдено, а часть нет.
Каждая задача имеет от 15 до 25 тестов.
Ценность отдельного теста варьируется в пределах от 0 до 3.
Обратите внимание, что при автоматической проверке необходимо
скурпулёзно следовать
указанным форматам входных и выходных данных.
В частности, не следует выводить различные приглашения "Введите два числа" и т.п.
Вывод данных следует завершать символом новой строки.
За каждую неудачную попытку снимается 4 балла.
Если первая успешная попытка по задаче имеет номер N, то число баллов, которые вы получите за задачу, равно S - 4*(N-1), где S - полное число очков за задачу.
Число попыток на одну задачу не должно превышать 5 (это проверяется преподавателем, а не автоматической системой).
- Оценка = 2 + очки / 50 (дробное число от 2 до 7, 6 и 7 соответствуют 5+ и 5++)
- Проверяющий преподаватель может повысить или понизить эту оценку.
- Баллы будут сниматься за похожие решения (смена имен переменных не поможет).
Программа будет зачтена автоматической системой как решение задачи, если
- программа компилируется компилятором языка Си (стандарт С99), а не Cи++ (на сервере используется компилятор GCC версии 3.4.6 с опцией
-lm
);
- не используются заголовочные файлы, отличные от math.h, stdio.h, stdlib.h, ctype.h, alloc.h (malloc.h), string.h;
- функция
main
объявлена как int main()
и возвращает 0 (пишите в конце функции main
return 0
);
- программа не использует какие-либо системные ресурсы и не делает системных вызовов, отличных от чтения из стандартного потока ввода и печати в стандартный поток вывода (пользуйтесь scanf, printf, getchar, gets, .. для чтения входных данных и печати результата);
- Нельзя пользоваться conio.h, в частности нельзя вызывать
clrscr()
- (last but not the least) программа верно работает на всех входных данных, удовлетворяющих условиям задачи, то есть выводит на поток вывода требуемый ответ и завершает работу без ошибок выполнения (no runtime errors) и время работы на каждом тесте (процессорное время) не превышает 1 секунды.
Если данные критерии не удовлетворены, то за программу можно получить
лишь половину или менее от полного количества очков.
Если программа удовлетворяет данным критериям, то
за неё можно получить половину от полного количества очков или более.
Преподаватель вправе снять за задачу половину баллов (рекомендуемое значение) или более, если вы её решили с попытки номер N, где N >= 5.
Программы будут дополнительно оцениваться проверяющими по ряду критериев, которые
определяются самими проверяющими. Примерный список критериев, которым
желательно удовлетворить, следующий:
- Программа написана в хорошем стиле, с использованием отступов для выделения блоков, и пробелов для выделения бинарных операторов.
- Программа имеет простую, очевидную структуру, не нуждающуюся в комментариях. Названия переменных и функций должны нести семантическую нагрузку и быть понятными.
Во время решения контрольной
ЗАПРЕЩЕНО:
- с одного компьютера заходить под разными логинами;
- пользоваться форумами или другими информационными системами;
- пользоваться локальной сетью;
- пользоваться флешками, дискетами и др. внешними электронными носителями информации;
- запрещено всё, что не разрешено нижне;
РАЗРЕШЕНО:
- Создавать исходные файлы, компилировать и запускать получаемые в результате исполняемые файлы.
- Создавать файлы с примерами входных и выходных данных.
- Пользоваться текстовым редактором или средой разработки для редактирования упомянутых выше файлов.
- Пользоваться браузером, в котором открыта одна страница сайта с системой ejudge или данной страницей.
- Пользоваться учебниками.