Ошибка.
Попробуйте повторить позже
Каждые сутки на вокзал прибывает электричек. Вам необходимо определить минимальный промежуток времени между прибытием двух разных электричек на основании заданного расписания прибытия электричек.
Входные данные:
В первой строке задано число — количество электричек.
В последующих строках задано моментов времени в формате .
Выходные данные:
Выведите одно число — минимальное время в минутах между прибытием двух электричек
file = open("temp.txt") n = int(file.readline()) times = [file.readline() for x in range(n)] minutes = [] for time in times: hh, mm = map(int, time.split(’:’)) minutes.append(hh * 60 + mm) minutes.sort() min_interval = minutes[-1] - minutes[0] for i in range(1, n): interval = minutes[i] - minutes[i-1] if interval < min_interval: min_interval = interval print(min_interval)
Ошибка.
Попробуйте повторить позже
У Арчи есть тугриков. Он хочет их эффективно вложить в лимонад. Ему даны цены за кубометров лимонада за дней. Арчи может только один раз купить лимонад в день и продать его в один из последующих дней . Помогите Арчи определить номера дней для покупки и продажи лимонада, чтобы получить максимальную прибыль. В ответ укажите день покупки и день продажи через пробел.
Входные данные:
В первой строке файла содержится число дней .
В последующих строках файла содержатся цены за кубометров лимонада в каждый из дней. Дни нумеруются с единицы.
Выходные данные:
Два числа и — номера дней для покупки и продажи лимонада.
file = open("temp.txt") n = int(file.readline()) prices = [int(file.readline()) for x in range(n)] maxProfit = -1e9 minIndex = 0 left = 0 right = 0 for i in range(1, n): purchasePricePerUnit = prices[minIndex] / 1000 lemonadeThatCanBeBought = 1000 / purchasePricePerUnit salePricePerUnit = prices[i] / 1000 lemonadeThatCanBeSold = lemonadeThatCanBeBought * salePricePerUnit profit = lemonadeThatCanBeSold - purchasePricePerUnit * lemonadeThatCanBeBought if prices[i] < prices[minIndex]: minIndex = i elif profit >= maxProfit: maxProfit = profit left = minIndex + 1 right = i + 1 print(left, right)
Ошибка.
Попробуйте повторить позже
Напишите рекурсивную функцию, которая была бы аналогом функции . На вход она должна принимать строку и параметр . На выходе должен получиться тот же самый результат, что и для но с доп. строками состоящими из одинаковых символов.
В качестве ответа укажите результат выполнения функции для строки и параметра .
def combinations_with_replacement(ans, s, r): if r == 0: print(ans) elif r <= len(s): for i in range(len(s)): s_new = ’’ for j in range(i, len(s)): s_new += s[j] combinations_with_replacement(ans + s[i], s_new, r - 1) s = ’ABC’ combinations_with_replacement(’’, s, 2)
Ошибка.
Попробуйте повторить позже
Напишите рекурсивную функцию, которая была бы аналогом функции . На вход она должна принимать строку и параметр , из элементов которой будут генерироваться сочетания длиной .
В качестве ответа укажите результат выполнения функции для строки длины для строки .
def combinations(ans, s, r): if r == 0: print(ans) elif r <= len(s): for i in range(len(s)): s_new = ’’ for j in range(i+1, len(s)): s_new += s[j] combinations(ans + s[i], s_new, r - 1) s = ’ABC’ combinations(’’, s, 2)
Ошибка.
Попробуйте повторить позже
Напишите рекурсивную функцию, которая была бы аналогом функции . На вход она должна принимать строку из которой будут генерироваться сочетания длиной .
В качестве ответа укажите всевозможные перестановки длины для строки .
def permutations(s, repeat): if repeat == 0: return [’’] result = [] for i in range(len(s)): for perm in permutations(s[:i] + s[i+1:], repeat-1): result.append(s[i] + perm) return result s = "AB" repeat = 2 print(permutations(s, repeat))
Ошибка.
Попробуйте повторить позже
Напишите рекурсивную функцию, которая была бы аналогом функции . На вход она должна принимать строку и параметр repeat. В качестве ответа укажите всевозможные строки длины из символов строки .
Пример: Всевозможные строки из символов строки длиной 2 будут выглядеть как: .
def product(s, r, ans): if r == 0: print(ans) else: for i in range(len(s)): product(s, r-1, ans + s[i]) s = ’ABC’ r = 2 ans = ’’ product(s, r, ans)
Ошибка.
Попробуйте повторить позже
Вам дан массив a = [1, 2, 9, 9, 9, 9, 9, 9, 9], представьте, что этот массив, это целое число и прибавьте к этому числу , как теперь будет выглядеть ваш массив? Напишите программу, которая найдет новое состояние массива. Использовать новые массивы запрещено!!!!!!!
В ответе напишите, все элементы измененного массива через запятую (скобки писать не нужно).
# Так как явно видно, что единица не сможет переполнить старший # разряд, не будем рассматривать случай, когда такое может произойти :) # Для такого случая необходимо обнулить все элементы # массива и добавить единицу в начало a = [1, 2, 9, 9, 9, 9, 9, 9, 9] perenos = 1 for i in range(len(a) - 1, -1, -1): tmp = a[i] + perenos a[i] = tmp % 10 perenos = tmp // 10 print(a)
Ошибка.
Попробуйте повторить позже
Назовем число хорошим, если оно равно сумме всех своих натуральных делителей (кроме самого числа). Проверьте, является ли число хорошим. В ответе укажите , если это так, иначе — .
n = 8128 summa = 1 for i in range(2, int(n ** 0.5) + 1): if n % i == 0: summa += i if i != n // i: summa += n // i print(summa == n)
Ошибка.
Попробуйте повторить позже
Напишите программу, которая определяет, является ли число счастливым.
Счастливое число — это число определенное следующим процессом:
- Число заменяется на сумму квадратов своих цифр.
- Пункт повторяется пока или пока цикл не станет бесконечным.
- Если , то оно счастливое.
В ответе напишите True, если число счастливое, иначе — False.
def sumNumber(n): summa = 0 while n > 0: summa += (n % 10) ** 2 n //= 10 return summa n = 29 seen = set() while n != 1 and not (n in seen): seen.add(n) n = sumNumber(n) print(n == 1)
Ошибка.
Попробуйте повторить позже
В текстовом файле содержится строка, которая содержит заглавных латинских символов, найдите индекс (индексация с ) первого неповторяющегося символа в строке. Если таких символов нет, то в ответе напишите .
Solution 1
s = open("7.txt").readline() letterArray = [0] * 26 for i in s: letterArray[ord(i) - 65] += 1 ans = -1 for i in range(len(s)): if letterArray[ord(s[i]) - 65] == 1: ans = i break print(ans)
Solution 2
s = open("7.txt").readline() ans = -1 for i in range(len(s)): fl = True for j in range(len(s)): if j != i and s[i] == s[j]: fl = False break if fl: ans = i break print(ans)
Ошибка.
Попробуйте повторить позже
Текстовый файл содержит строка, в которой содерджится не более чем символов. Вам необходимо проверить, является ли данная строка палиндромом. Использовать «фишки» Питона запрещено.
Если строка является палиндромом, то в ответе напишите длину наибольшой последовательность из символов , иначе напишите длину наибольшой последовательность из символов .
s = open("6.txt").readline() fl = True for i in range(len(s) // 2): if s[i] != s[len(s) - i - 1]: fl = False break if fl: findSymbol = ’A’ else: findSymbol = ’B’ count = 1 maxim = 1 for i in range(len(s) - 1): if s[i] == s[i + 1] and s[i] == findSymbol: count += 1 maxim = max(maxim, count) else: count = 1 print(maxim)
Ошибка.
Попробуйте повторить позже
Текстовый файл содержит строк, в каждой строке содерджится не более чем символов. Вам необходимо найти самую длинную префиксную подстроку, совпадающую во всех строках. Префиксная подстрока — подстрока, которая всегда начинается с первого символа строки. Для строки префиксными подстроками могут являться подстроки , , , .
Пример 1:
Набор строк:
Результат поиска:
Пример 2:
Набор строк:
Результат поиска:
a = open("5.txt").readlines() minimLengthString = 1000 for i in a: minimLengthString = min(minimLengthString, len(i)) ans = "" for i in range(minimLengthString): flag = True for j in range(len(a) - 1): if a[j][i] != a[j + 1][i]: flag = False break if flag: ans += a[0][i] else: break print(ans)
Ошибка.
Попробуйте повторить позже
В текстовом файле содержатся набора чисел. Первый набор содержит сортированных чисел, второй набор содержит сортированных чисел, все числа натуральные, наборы идут друг за другом. Вам необходимо создать массив, который будет содержать числа из двух наборов в отсортированном порядке. В ответе запишите сумму элементов получившегося массива.
Пример:
Первый набор чисел:
Второй набор чисел:
Результат слияния:
f = open("4.txt") n, m = 100, 120 a = [int(f.readline()) for _ in range(n)] b = [int(f.readline()) for _ in range(m)] c = [] i, j = 0, 0 while i < n and j < m: if a[i] < b[j]: c.append(a[i]) i += 1 else: c.append(b[j]) j += 1 while i < n: c.append(a[i]) i +=1 while j < m: c.append(b[j]) j += 1 print(sum(c))
Ошибка.
Попробуйте повторить позже
В текстовом файле содержится число , а затем набор из натуральных чисел. Числа идут в отсортированном порядке. Вам необходимо определить, под каким индексом вы можете вставить число в данный набор. В ответе напишите подходящий индекс.
В данной задаче при работе с массивами можно использовать только метод append
Пример 1:
Набор: , —
Пример 2:
Набор: , —
Пример 3:
Набор: , —
f = open("3.txt") k = int(f.readline()) last = 0 # последнее рассмотренное число ans = -1 for i in range(1000): x = int(f.readline()) if k > last and x >= k: ans = i break last = x if ans == -1: ans = 1000 print(ans)
Ошибка.
Попробуйте повторить позже
В текстовом файле содержится набор из натуральных чисел. Числа идут в отсортированном порядке. Найдите количество элементов, которое останется в наборе, если удалить из него все дубликаты.
Пример:
Начальное состояние набора
Набор: — элементов
Конечное состояние набора
Набор: — элемента
Решение 1
f = open("2.txt") a = [] for i in f: a.append(int(i)) f.close() i = 1 while i < len(a): if a[i] == a[i - 1]: a.pop(i) else: i +=1 print(i)
Решение 2
f = open("2.txt") a = [] for i in f: a.append(int(i)) f.close() indexLastElem = 0 for i in range(1, 1000): if a[indexLastElem] != a[i]: a[indexLastElem + 1] = a[i] indexLastElem += 1 print(indexLastElem + 1)
Ошибка.
Попробуйте повторить позже
В текстовом файле содержится набор из различных натуральных чисел, найдите индексы двух чисел (индексация с ), сумма которых равна . В ответе запишите найденные индексы через пробел в порядке возрастания.
f = open("1.txt") a = [] for i in range(100): a.append(int(f.readline())) for i in range(100): for j in range(i + 1, 100): if (a[i] + a[j] == 199): print(i, j)
Ошибка.
Попробуйте повторить позже
Вы — начальник в крупной компании, у Вас в подчинении сотрудников, которым Вы должны выплатить зарплату за прошедший месяц. В прошедшем месяце было недель, в каждой неделе по дней. Каждый сотрудник получает ежедневную зарплату, причем она зависит, сколько он работал в тот, или иной день. Вы хотите узнать, сколько сотрудников компании имеют суммарную зарплату за месяц, бОльшую средней месячной зарплаты среди всех сотрудников. Напишите программу, которая решит эту задачу за Вас
Входные данные:
В первой строке входных данных заданы три целых числа , и () — количество сотрудников у Вас в подчинении, количество недель в прошедшем месяце и количество дней в неделе.
Далее заданы блоков по чисел в каждом — зарплаты каждого сотрудника по дням в течение месяца.
Выведите одно число — сколько сотрудников компании имеют суммарную зарплату за месяц, бОльшую средней месячной зарплаты среди всех сотрудников.
Пример входного файла:
Ответ на данный пример:
f = open("file.txt") n, m, k = map(int, f.readline().split()) mas = [[[0 for j in range(k)] for i in range(m)] for x in range(n)] for i in range(n): for j in range(m): mas[i][j] = list(map(int, f.readline().split())) sred, ans = 0, 0 for i in range(n): for j in range(m): for x in range(k): sred += mas[i][j][x] sred /= n for i in range(n): salary = 0 for j in range(m): for x in range(k): salary += mas[i][j][x] if (salary > sred): ans += 1 print(ans)
Ошибка.
Попробуйте повторить позже
Куб разлинован на клеток (). Исполнитель Робот может перемещаться по клеткам, выполняя за одно перемещение одну из трёх команд: вглубь вправо, вглубь влево или вниз. По команде вглубь вправо Робот перемещается в соседнюю правую клетку, по команде вглубь влево он перемещается в соседнюю левую клетку, по команде вниз – в соседнюю нижнюю. То есть, например, для угла робот сможет попасть в углы , , для рисунка ниже. При попытке выхода за границу квадрата Робот разрушается. Перед каждым запуском Робота в каждой клетке куба лежит монета достоинством от до . Посетив клетку, Робот забирает монету с собой; это также относится к начальной и конечной клетке маршрута Робота. Определите максимальную денежную сумму, которую может собрать Робот, пройдя из угла с номером клетки в угол с номером .
Примечание:
Углы куба нумеруются таким образом
Входные данные:
В первой строчке входных данных содержится единственное число . В следующих строках содержатся по чисел.
Выведите максимальную денежную сумму, которую может собрать робот.
Пример входного файла:
2
Ответ для приведённого примера:
f = open("file.txt") n = int(f.readline()) a = [[0 for j in range(n)] for i in range(n)] for i in range(n): for j in range(n): t = list(map(int, f.readline().split())) a[i][j] = t for i in a: print(*i) dp = [[[0 for k in range(n)] for j in range(n)] for i in range(n)] dp[0][0][0] = a[0][0][0] # заполняем грани for i in range(1, n): dp[i][0][0] = dp[i - 1][0][0] + a[i][0][0] for j in range(1, n): dp[0][j][0] = dp[0][j - 1][0] + a[0][j][0] for k in range(1, n): dp[0][0][k] = dp[0][0][k - 1] + a[0][0][k] # лицевая for i in range(1, n): for j in range(1, n): dp[i][j][0] = max(dp[i - 1][j][0], dp[i][j - 1][0]) + a[i][j][0] # верхняя for j in range(1, n): for k in range(1, n): dp[0][j][k] = max(dp[0][j - 1][k], dp[0][j][k - 1]) + a[0][j][k] # боковая for i in range(1, n): for k in range(1, n): dp[i][0][k] = max(dp[i - 1][0][k], dp[i][0][k - 1]) + a[i][0][k] for i in range(1, n): for j in range(1, n): for k in range(1, n): dp[i][j][k] = max(dp[i - 1][j][k], dp[i][j - 1][k], dp[i][j][k - 1]) + a[i][j][k] print(dp[n - 1][n - 1][n - 1])
Ошибка.
Попробуйте повторить позже
В Берляндии построили новое здание общежития для университета! В него уже заселились студенты, некоторые из которых очень любят слушать громкую музыку после полуночи, что доставляет неудобство всем соседям вокруг. Здание имеет форму прямоугольного параллепипеда, так что соседями для студента считаются все люди, живущие сверху, снизу, слева и справа от него. Cтудент считается невыспавшимся, если хотя бы один из его соседей громко слушает музыку, причем человек, который поставил музыку, выспится, потому что его музыка его не напрягает. Количество подъездов равно , количество этажей в подъезде равно , количество квартир на этаже . По данным о студентах определите, сколько из них выспится?
Входные данные:
В первой строчке входных данных содержатся 3 числа: . В следующих строках содержатся по чисел - если студент слушает музыку после полуночи и в противном случае.
Выведите единственное число — количество студентов, которые смогут выспаться.
Пример входного файла:
Пояснение к примеру:
f = open("1.txt") n, m, l = map(int, f.readline().split()) a = [[[0 for q in range(l)] for j in range(m)] for i in range(n)] for i in range(n): for j in range(m): t = list(map(int, f.readline().split())) a[i][j] = t cnt = 0 for i in range(n): for j in range(m): for k in range(l): p = 1 if (k - 1 >= 0 and a[i][j][k - 1] == 1) or (k + 1 < l and a[i][j][k + 1] == 1) \ or (i - 1 >= 0 and a[i - 1][j][k] == 1) or (i + 1 < n and a[i + 1][j][k] == 1) \ or (j - 1 >= 0 and a[i][j - 1][k] == 1) or (j + 1 < m and a[i][j + 1][k] == 1): p = 0 cnt += p print(cnt)
Ошибка.
Попробуйте повторить позже
Вы — начальник в крупной компании, у Вас в подчинении сотрудников, которым Вы должны выплатить зарплату за прошедший месяц. В прошедшем месяце было недель, в каждой неделе по дней. Каждый сотрудник получает ежедневную зарплату, причем она зависит, сколько он работал в тот, или иной день. Вам предстоит немного пересмотреть зарплаты сотрудников, некоторым добавить денег в какой-либо день, поощрить его за хорошую работу. Ну а некоторым, вычесть некое количество денег за некачественно выполненный проект в определенный день. Затем посчитать общую сумму выплат работникам. Напишите программу, которая решит эту задачу за Вас.
Входные данные:
В первой строке входных данных заданы три целых числа , и () — количество сотрудников у Вас в подчинении, количество недель в прошедшем месяце и количество дней в неделе.
Далее заданы блоков по чисел в каждом — зарплаты каждого сотрудника по дням в течение месяца.
В -й строке входных данных задано число — количество правок в зарплатах сотрудников ().
В следующих строках записаны по числа. Первые три числа показывают, у какого сотрудника происходит изменение зарплаты, в какой по счету неделе и в какой день данной недели происходят эти изменения соответственно. Последнее же число показывает, насколько изменилась зарплата текущего сотрудника в определенный день. Заметьте, что изменения могут быть как положительными, так и отрицательными (то есть происходит прибавка или убавка зарплаты).
Выведите одно число — суммарную зарплату всех работников после всех изменений.
Пример входного файла:
Ответ на данный пример:
f = open("file.txt") n, m, k = map(int, f.readline().split()) mas = [[[0 for j in range(k)] for i in range(m)] for x in range(n)] for i in range(n): for j in range(m): mas[i][j] = list(map(int, f.readline().split())) t = int(f.readline()) for i in range(t): a, b, c, d = map(int, f.readline().split()) # нумерация в массивах начинается с нуля mas[a - 1][b - 1][c - 1] += d ans = 0 for i in range(n): for j in range(m): for x in range(k): ans += mas[i][j][x] print(ans)