Олимпиады по информатике (ХМАО - Югра)

   
 
Югорский НИИ ИТ, Югорский ФМЛ
Логин:   Пароль:    
 
   
 
Новости
О проекте
Регистрация
Гостевая книга
Форум
Архив задач
Состояние системы
Олимпиады
Работа в системе
Рейтинг
Новичкам
Методическое пособие
Дистанционное обучение
Дистрибутивы
Ссылки

















Спирт

(Время: 1 сек. Память: 16 Мб Сложность: 10%)

Это самая простая задача олимпиады. Для определения максимально возможного числа молекул нужно сначала оценить эти количества для каждого элемента в отдельности. Например, если мы имеем C атомов углерода и сколько угодно много атомов других веществ, то не можем получить более чем C div 2 молекул спирта, т.к. каждая молекула состоит из двух таких атомов. Аналогично, мы не можем получить более H div 6 молекул спирта, имея не более H атомов водорода. Для кислорода число молекул не может превосходить число атомов. Таким образом, ответом на задачу будет служить минимальное значение из вышеописанных ограничений.

Алгоритмически задача решается очень просто:

read(c,h,o)
write(min(c div 2, min(h div 6, o)))

Но даже такая утешительная задача имеет «подводный камень», который скрывается в ограничениях на число атомов. Поскольку эти числа могут превышать значения максимального 4-байтового целого, то здесь нельзя гарантировать правильность решения с использованием таких типов как integer и longint в Паскале либо int и long int в Си. Здесь следует использовать 8-байтовый целый тип int64 или __int64 (в зависимости от языка). Так же возможно использовать большой вещественный тип (например, тип extended в Паскале) для хранения и обработки таких чисел, но здесь возникают некоторые сложности с делением и форматом вывода. Если же прибегать к длинной арифметике, то такой подход может «свести на нет» утешительность данной задачи.

[Все попытки] [Задача]


 
     
Югорский НИИ ИТ, Югорский ФМЛ