Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 

Спирт

(Время: 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 в Паскале) для хранения и обработки таких чисел, но здесь возникают некоторые сложности с делением и форматом вывода. Если же прибегать к длинной арифметике, то такой подход может «свести на нет» утешительность данной задачи.

[Обсуждение] [Все попытки] [Задача]


Красноярский краевой Дворец пионеров, (c)2006 - 2025, ИНН 246305493507, E-mail: admin@acmp.ru



классицизм в музыке