03 Простейшие программы
Готовиться с нами - ЛЕГКО!
Ошибка.
Попробуйте повторить позже
В текстовом файле содержится набор из натуральных чисел. Числа идут в отсортированном порядке. Найдите
количество элементов, которое останется в наборе, если удалить из него все дубликаты.
Пример:
Начальное состояние набора
Набор: —
элементов
Конечное состояние набора
Набор: —
элемента
Решение 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)
Ошибка.
Попробуйте повторить позже
В текстовом файле содержится число , а затем набор из
натуральных чисел. Числа идут в отсортированном
порядке. Вам необходимо определить, под каким индексом вы можете вставить число
в данный набор. В ответе
напишите подходящий индекс.
В данной задаче при работе с массивами можно использовать только метод 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)
Ошибка.
Попробуйте повторить позже
В текстовом файле содержатся набора чисел. Первый набор содержит
сортированных чисел, второй набор
содержит
сортированных чисел, все числа натуральные, наборы идут друг за другом. Вам необходимо создать массив,
который будет содержать числа из двух наборов в отсортированном порядке. В ответе запишите сумму элементов
получившегося массива.
Пример:
Первый набор чисел:
Второй набор чисел:
Результат слияния:
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))
Ошибка.
Попробуйте повторить позже
Текстовый файл содержит строк, в каждой строке содерджится не более чем
символов. Вам необходимо найти
самую длинную префиксную подстроку, совпадающую во всех строках. Префиксная подстрока — подстрока, которая
всегда начинается с первого символа строки. Для строки
префиксными подстроками могут являться подстроки
,
,
,
.
Пример 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)
Ошибка.
Попробуйте повторить позже
Текстовый файл содержит строка, в которой содерджится не более чем символов. Вам необходимо проверить,
является ли данная строка палиндромом. Использовать «фишки» Питона запрещено.
Если строка является палиндромом, то в ответе напишите длину наибольшой последовательность из символов , иначе
напишите длину наибольшой последовательность из символов
.
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)
Ошибка.
Попробуйте повторить позже
В текстовом файле содержится строка, которая содержит заглавных латинских символов, найдите индекс
(индексация с
) первого неповторяющегося символа в строке. Если таких символов нет, то в ответе напишите
.
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)
Ошибка.
Попробуйте повторить позже
Напишите программу, которая определяет, является ли число счастливым.
Счастливое число — это число определенное следующим процессом:
- Число
заменяется на сумму квадратов своих цифр.
- Пункт
повторяется пока
или пока цикл не станет бесконечным.
- Если
, то оно счастливое.
В ответе напишите 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)
Ошибка.
Попробуйте повторить позже
Назовем число хорошим, если оно равно сумме всех своих натуральных делителей (кроме самого числа). Проверьте,
является ли число хорошим. В ответе укажите
, если это так, иначе —
.
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)
Ошибка.
Попробуйте повторить позже
Вам дан массив 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)
Ошибка.
Попробуйте повторить позже
У Арчи есть тугриков. Он хочет их эффективно вложить в лимонад. Ему даны цены за
кубометров лимонада за
дней. Арчи может только один раз купить лимонад в день
и продать его
в один из последующих дней
. Помогите Арчи определить номера дней для покупки и
продажи лимонада, чтобы получить максимальную прибыль. В ответ укажите день покупки и день
продажи через пробел.
Входные данные:
В первой строке файла содержится число дней
.
В последующих строках файла содержатся цены
за
кубометров
лимонада в каждый из дней. Дни нумеруются с единицы.
Выходные данные:
Два числа и
— номера дней для покупки и продажи лимонада.
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)
Ошибка.
Попробуйте повторить позже
Каждые сутки на вокзал прибывает электричек. Вам необходимо определить минимальный
промежуток времени между прибытием двух разных электричек на основании заданного расписания
прибытия электричек.
Входные данные:
В первой строке задано число
— количество электричек.
В последующих строках задано моментов времени в формате
.
Выходные данные:
Выведите одно число — минимальное время в минутах между прибытием двух электричек
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)