- Решения задач школьного этапа Всероссийской олимпиады школьников по информатике (9-11 классы)
- Решение
- Задача B. Улиточные бега
- Формат входных данных
- Формат выходных данных
- Примеры
- Решение
- Задача C. Треугольник
- Формат входных данных
- Формат выходных данных
- Примеры
- Д. П. Кириенко. Программирование на языке Python (школа 179 г. Москвы)
- Решение модуля 10.1 из курса «Поколение python» для начинающих
Решения задач школьного этапа Всероссийской олимпиады школьников по информатике (9-11 классы)
Эта задача с открытыми тестами. Ее решением является набор ответов, а не программа на языке программирования. Тесты указаны в самом условии. От вас требуется лишь ввести ответы на них в тестирующую систему.
Известно, что все современные компьютеры используют двоичную систему счисления. Но некоторые исследователи считают, что компьютеры на троичной, четверичной и других системах счисления будут работать быстрее.
Вычислительная компания XYZ закупила новые экспериментальные компьютеры, но её сотрудники не знают, в какой системе счисления новые компьютеры выдают результаты их вычислений. Помогите им определить их результаты в традиционной десятичной системе, если известно, что последовательность цифр N, которую выдает экспериментальный компьютер, записана в минимально возможной для этого системе счисления.
- Тест №1: N=123
- Тест №2: N=796
- Тест №3: N = 60452
- Тест №4: N = 101001
- Тест №5: N = 32674
- Тест №6: N = 306973
- Тест №7: N = 123042
- Тест №8: N = 202122
- Тест №9: N = 871856
- Тест №10: N = 125341
Решение
Для получения ответов удобно воспользовать программой, в которой будет определяться минимально возможное основание системы счисления:
- int( max(n) ) + 1 — максимальный символ в строке n переводим в целое число + 1
- преводим строковое представление числа n с найденным основанием в целое десятичное число: int( строка, основание) (если основание не указано — сторка в десятичном представлении)
for i in range(10): n = input() print ( int( n, int( max(n) ) + 1 ) )
123 27 796 796 60452 14639 101001 41 32674 13756 306973 306973 123042 4772 202122 557 871856 519747 125341 11581
Задача B. Улиточные бега
- Имя входного файла: стандартный ввод
- Имя выходного файла: стандартный вывод
- Ограничение по времени: 1 секунда
- Ограничение по памяти: 256 мегабайт
Каждые 100 лет в Стране Улиток проводятся улиточные бега на дистанции L сантиметров. Это станет для вас неожиданностью, но в этом столетии они проводятся именно сегодня!
В этом году организаторы приняли решение провести бега на новой трассе — прямоугольнике размера A × B сантиметров. Согласно правилам, участники начнут бежать из нижнего левого угла прямоугольника против часовой стрелки в соответствии со схемой ниже:
К сожалению, организаторы забега не могут определить, на какой стороне трассы должен быть расположен финиш, чтобы участники пробежали ровно L сантиметров. Напишите программу, которая поможет определить сторону прямоугольника, на которой должна находиться точка финиша. Обратите внимание, что длина забега может быть больше периметра прямоугольника. В таком случае, участники должны будут пробежать несколько кругов прежде чем финишировать.
Формат входных данных
Вводятся три целых числа A, B, L (2
Формат выходных данных
Выведите TOP, если улитка остановится на верхней стороне прямоугольника, BOTTOM — на нижней, LEFT — на левой, RIGHT — на правой стороне прямоугольника.
Примеры
Решение
После преодаления дистанции равной периметру прямоугольника 2(a+b) — история со сторонами повтаряется. Поэтому достаточно взять не всю дистанцию l, а ее остаток на длину периметра l = l % 2(a+b). Далее, сравниваем l с длиной сторон в рамках одного периметра: до a — нижняя, иначе до a+b — правая, иначе до 2a+b — верхняя и иначе — левая
a,b,l=int(input()), int(input()), int(input()) l %= 2*(a+b) print (la and 'BOTTOM' or l(a+b) and 'RIGHT' or l(a+a+b) and 'TOP' or 'LEFT')
Задача C. Треугольник
- Имя входного файла: стандартный ввод
- Имя выходного файла: стандартный вывод
- Ограничение по времени: 1 секунда
- Ограничение по памяти: 256 мегабайт
На координатной плоскости расположены равнобедренный прямоугольный треугольник ABC с длиной катета d и точка X. Катеты треугольника лежат на осях координат, а вершины расположены в точках: A(0, 0), B(d, 0), C(0, d). Требуется написать программу, которая определяет взаимное расположение точки X и треугольника. Если точка X расположена внутри или на сторонах треугольника, выведите 1. Если же точка находится вне треугольника, выведите 0.
Формат входных данных
В первой строчке вводится натуральное число d (не превосходящее 1000), во второй — координата точки X по оси OX (целое число из диапазона от −1000 до 1000), в третьей координата точки X по оси OY (целое число из диапазона от −1000 до 1000).
Формат выходных данных
Если точка лежит внутри, на стороне треугольника или совпадает с одной из вершин, то выве- дите число 1. Если точка лежит вне треугольника, то выведите 0.
Примеры
Д. П. Кириенко. Программирование на языке Python (школа 179 г. Москвы)
Ранее была задача вычисления числа сочетаний из n элементов по k, для чего необходимо вычисление факториалов трех величин: n, k и n-k. Для этого можно сделать три цикла, что приводит к увеличению размера программы за счет трехкратного повторения похожего кода. Вместо этого лучше сделать одну , вычисляющую факториал любого данного числа n и трижды использовать эту функцию в своей программе. Соответствующая функция может выглядеть так:
def factorial(n): f = 1 for i in range(2, n + 1): f *= i return f
Этот текст должен идти в начале программы, вернее, до того места, где мы захотим воспользоваться функцией factorial . Первая строчка этого примера является описанием нашей функции. factorial — идентификатор, то есть имя нашей функции. После идентификатора в круглых скобках идет список параметров, которые получает наша функция. Список состоит из перечисленных через запятую идентификаторов параметров. В нашем случае список состоит из одной величины n . В конце строки ставится двоеточие.
Далее идет тело функции, оформленное в виде блока, то есть с отступом. Внутри функции вычисляется значение факториала числа n и оно сохраняется в переменной f . Функция завершается инструкцией return f , которая завершает работу функции и возвращает значение переменной f . Инструкция return может встречаться в произвольном месте функции, ее исполнение завершает работу функции и возвращает указанное значение в место вызова. Если функция не возвращает значения, то инструкция return используется без возвращаемого значения, также в функциях, не возвращающих значения, инструкция return может отсутствовать.
Теперь мы можем использовать нашу функцию несколько раз. В этом примере мы трижды вызываем функцию factorial для вычисления трех факториалов: factorial(n) , factorial(k) , factorial(n-k) .
n = int(input()) k = int(input()) print factorial(n) // (factorial(k) * factorial(n - k))
Мы также можем, например, объявить функцию binomial , которая принимает два целочисленных параметра n и k и вычисляет число сочетаний из n по k :
def binomial(n, k) return factorial(n) // (factorial(k) * factorial(n - k))
Тогда в нашей основной программе мы можем вызвать функцию binomial для нахождения числа сочетаний:
Вернемся к задаче нахождения наибольшего из двух или трех чисел. Функцию нахождения максимума из двух чисел можно написать так:
def max(a, b): if a > b: return a else: return b
Теперь мы можем реализовать функцию max3 , находящую максимум трех чисел:
def max3(a, b, c): return max(max(a, b), c)
Функция max3 дважды вызывает функцию max для двух чисел: сначала, чтобы найти максимум из a и b , потом чтобы найти максимум из этой величины и c .
Решение модуля 10.1 из курса «Поколение python» для начинающих
Точные ответы и стопроцентные решения на языке Python модуля 10.1 по курса «Поколение Python: курс для начинающих». Разбираем контрольную работу.
Первым индексом в строковом значении является
Последним индексом в строковом значении является
Если попытаться использовать индекс, который находится за пределами диапазона строкового значения, то
произойдет ошибка IndexError
Какой оператор определяет, содержится ли одно строковое значение в другом?
Какой строковый метод возвращает индекс первого вхождения подстроки в строку?
Какой строковый метод возвращает копию строкового значения, в котором удалены все ведущие пробельные символы?
Какой строковый метод возвращает копию строкового значения, в котором удалены все ведущие и замыкающие пробельные символы?
Какой строковый метод возвращает истину, если строковое значение содержит только буквы и имеет по крайней мере один символ?
Какой строковый метод возвращает истину, если строковое значение содержит только цифры и имеет по крайней мере один символ?
Что покажет приведенный ниже фрагмент кода?
name = ‘джо’
print(name.lower())
print(name.upper())
print(name)