ПИТОН!
На дискотеке в ряд стоят три прожектора, которые поочерёдно светят в следующем порядке: левый, средний, правый, средний, левый, средний, правый, средний и т.д. (слева направо, затем налево, опять направо, ...). Каждый прожектор горит в течение одной секунды.
Известно, что лампа левого прожектора имеет ресурс A секунд горения, среднего – B секунд, правого – С секунд. Определите, сколько времени сможет продолжаться этот процесс горения прожекторов.
Входные данные
Программа получает на вход три целых неотрицательных числа A, B, C – время горения левого, среднего, правого прожектора.
Выходные данные
Программа должна вывести одно целое число.
Система оценивания
Решение, правильно работающее только для случаев, когда все входные числа не превосходят 10, будет оцениваться в
Решение, правильно работающее только для случаев, когда все входные числа не превосходят 104, будет оцениваться в
В будет оцениваться решение, правильно работающее, когда сумма всех входных чисел по модулю не превосходит 2×10^9
Пример:
Ввод: 3 3 3
Вывод: 7
Пояснение: прожектора горят в следующем порядке: левый, средний, правый, средний, левый, средний, правый. После этого должен загореться средний прожектор, но он уже выработал ресурс и загореться не сможет. Поэтому процесс обрывается после 7 с.
Так-с, у нас 5-ти буквенные слова.
Каждую букву можно использовать в слове 1 раз, так еще и гласную можно только 1, следовательно...
Рассмотрим вариант, что на первом месте стоит А.
Тогда на первом месте может стоять 1 буква, на втором 5 букв.
На третьем 4, на четвертом 3, на пятом 2.
1 * 5 * 4 * 3 * 2 = 120 вариантов
Но гласная может стоять и на втором, и на третьем месте и тд...
Есть 5 вариантов ее расстановки, следовательно.
120 * 5 = 600
А гласная буква у нас не одна, а две, значит, мы должны количество умножить на 2.
600 * 2 = 1200
ответ: 1200
Данный код представляет собой описание класса Time, содержащего два конструктора, два поля, и перегруженные операторы ввода, вывода и вычитания.
Вот эта конструкция:
Time()
: m_hours(0), m_minutes(0) {
}
Это конструктор класса без параметров, инициализирует переменные
m_hours и m_minutes, присваивая им ноль.
Time(short hours, short minutes)
: m_hours(hours), m_minutes(minutes) {
}
Конструктор класса с параметрами
Time operator-(const Time& time) {
Определение оператора вычитания для класса . Необходимо для того, чтобы можно было вычитать одно время из другого. Например, так:
Time t(5, 30), t2(1, 20); // Использование конструктора с параметрами
t=t - t2; // Использование оператора вычитания
std::cout << t; // Выведет 4:10
// Чтобы была возможность использовать такое выражение, мы переопределяем оператор вывода, о чем чуть ниже.
friend std::ostream& operator<<(std::ostream& os, const Time& time);
friend std::istream& operator>>(std::istream& is, Time& time);
Объявление двух дружественных классу Time перегруженных операторов (ввода и вывода). Совершенно бесполезные строки, учитывая, что в коде, который перегружает эти операторы не используются закрытые члены класса Time, а используются m_minutes и m_hours, объявленные в классе Time как public.
Использование этих двух строк было бы уместно, если бы m_minutes и m_hours были бы private.
std::ostream& operator<<(std::ostream& os, const Time& time) {
Перегрузка оператора вывода , чтобы мы могли делать так:
std::cout << t;
std::istream& operator>>(std::istream& is, Time& time) {
Перегрузка оператора ввода , чтобы мы могли делать так:
std::cin >> t;
Дополнительные объяснения, если непонятно что-то конкретное, спрашивайте в комментариях.