Тема Практика Программирования
03 Простейшие программы
Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела практика программирования
Решаем задачи

Ошибка.
Попробуйте повторить позже

Задача 1#63807

Каждые сутки на вокзал прибывает n  электричек. Вам необходимо определить минимальный промежуток времени между прибытием двух разных электричек на основании заданного расписания прибытия электричек.

Входные данные:

В первой строке задано число n  (1 ≤ n ≤ 10000 )  — количество электричек.

В последующих строках задано n  моментов времени в формате HH:MM  (0 ≤ HH  ≤  23,0 ≤ MM   ≤ 59)  .

Выходные данные:

Выведите одно число — минимальное время в минутах между прибытием двух электричек

Вложения к задаче
Показать ответ и решение
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)

Ответ: 4

Ошибка.
Попробуйте повторить позже

Задача 2#63794

У Арчи есть 10000  тугриков. Он хочет их эффективно вложить в лимонад. Ему даны цены за 1000  кубометров лимонада за N  дней. Арчи может только один раз купить лимонад в день i  и продать его в один из последующих дней j  (i < j)  . Помогите Арчи определить номера дней для покупки и продажи лимонада, чтобы получить максимальную прибыль. В ответ укажите день покупки и день продажи через пробел.

Входные данные:

В первой строке файла содержится число дней N  (1 ≤ N  ≤  1000000)  .

В последующих N  строках файла содержатся цены p  (1 ≤ p ≤ 10000)  за 1000  кубометров лимонада в каждый из дней. Дни нумеруются с единицы.

Выходные данные:

Два числа i  и j  — номера дней для покупки и продажи лимонада.

Вложения к задаче
Показать ответ и решение
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)

Ответ: 21 92

Ошибка.
Попробуйте повторить позже

Задача 3#52713

Вам дан массив a = [1, 2, 9, 9, 9, 9, 9, 9, 9], представьте, что этот массив, это целое число 129999999  и прибавьте к этому числу 1  , как теперь будет выглядеть ваш массив? Напишите программу, которая найдет новое состояние массива. Использовать новые массивы запрещено!!!!!!!

В ответе напишите, все элементы измененного массива через запятую (скобки писать не нужно).

Показать ответ и решение
    # Так как явно видно, что единица не сможет переполнить старший
    # разряд, не будем рассматривать случай, когда такое может произойти :)
    # Для такого случая необходимо обнулить все элементы
    # массива и добавить единицу в начало

    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)

Ответ: 1, 3, 0, 0, 0, 0, 0, 0, 0

Ошибка.
Попробуйте повторить позже

Задача 4#52712

Назовем число хорошим, если оно равно сумме всех своих натуральных делителей (кроме самого числа). Проверьте, является ли число 8128  хорошим. В ответе укажите True  , если это так, иначе — F alse  .

Показать ответ и решение
    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

Ошибка.
Попробуйте повторить позже

Задача 5#52711

Напишите программу, которая определяет, является ли число n  счастливым.

Счастливое число — это число определенное следующим процессом:

  1. Число n  заменяется на сумму квадратов своих цифр.
  2. Пункт 1  повторяется пока n! = 1  или пока цикл не станет бесконечным.
  3. Если n == 1  , то оно счастливое.

В ответе напишите True, если число n = 29  счастливое, иначе — 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)

Ответ: False

Ошибка.
Попробуйте повторить позже

Задача 6#52710

В текстовом файле содержится строка, которая содержит 100  заглавных латинских символов, найдите индекс (индексация с 0  ) первого неповторяющегося символа в строке. Если таких символов нет, то в ответе напишите − 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)

Ответ: 48

Ошибка.
Попробуйте повторить позже

Задача 7#52709

Текстовый файл содержит строка, в которой содерджится не более чем 1000000  символов. Вам необходимо проверить, является ли данная строка палиндромом. Использовать «фишки» Питона запрещено.

Если строка является палиндромом, то в ответе напишите длину наибольшой последовательность из символов  A  , иначе напишите длину наибольшой последовательность из символов B  .

Вложения к задаче
Показать ответ и решение
    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)

Ответ: 4

Ошибка.
Попробуйте повторить позже

Задача 8#52708

Текстовый файл содержит 1000  строк, в каждой строке содерджится не более чем 100  символов. Вам необходимо найти самую длинную префиксную подстроку, совпадающую во всех строках. Префиксная подстрока — подстрока, которая всегда начинается с первого символа строки. Для строки ABCD  префиксными подстроками могут являться подстроки A  , AB  , ABC  , ABCD  .

Пример 1:

Набор строк: [Krab,Krabster,Krabsburger]

Результат поиска: Krab

Пример 2:

Набор строк: [Krab,braK,rak]

Результат поиска:

Вложения к задаче
Показать ответ и решение
    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)

Ответ: ami

Ошибка.
Попробуйте повторить позже

Задача 9#52707

В текстовом файле содержатся 2  набора чисел. Первый набор содержит 100  сортированных чисел, второй набор содержит 120  сортированных чисел, все числа натуральные, наборы идут друг за другом. Вам необходимо создать массив, который будет содержать числа из двух наборов в отсортированном порядке. В ответе запишите сумму элементов получившегося массива.

Пример:

Первый набор чисел: [1,1,2,2,3]

Второй набор чисел: [1,2,4]

Результат слияния: [1,1,1,2,2,2,3,4]

Вложения к задаче
Показать ответ и решение
    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))

Ответ: 10864

Ошибка.
Попробуйте повторить позже

Задача 10#52706

В текстовом файле содержится число k  , а затем набор из 1000  натуральных чисел. Числа идут в отсортированном порядке. Вам необходимо определить, под каким индексом вы можете вставить число k  в данный набор. В ответе напишите подходящий индекс.

В данной задаче при работе с массивами можно использовать только метод append

Пример 1:

Набор: [1,1,2,2,3]  , k = 5  index = 5

Пример 2:

Набор: [1,3,4]  , k = 2  index = 1

Пример 3:

Набор: [1,3,4]  , k = 3  index = 1

Вложения к задаче
Показать ответ и решение
    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)

Ответ: 247

Ошибка.
Попробуйте повторить позже

Задача 11#52705

В текстовом файле содержится набор из 1000  натуральных чисел. Числа идут в отсортированном порядке. Найдите количество элементов, которое останется в наборе, если удалить из него все дубликаты.

Пример:

Начальное состояние набора

Набор: [1,1,2,2,3]  5  элементов

Конечное состояние набора

Набор: [1,2,3]  3  элемента

Вложения к задаче
Показать ответ и решение

Решение 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)

Ответ: 100

Ошибка.
Попробуйте повторить позже

Задача 12#52704

В текстовом файле содержится набор из 100  различных натуральных чисел, найдите индексы двух чисел (индексация с 0  ), сумма которых равна 199  . В ответе запишите найденные индексы через пробел в порядке возрастания.

Вложения к задаче
Показать ответ и решение
    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)

Ответ: 4 73

Ошибка.
Попробуйте повторить позже

Задача 13#49444

Что выведет программа?

a = [1,2,3,4,5,6,7,8,9,10]
n = len(a)
k = 0
for i in range(n):
    if a[i]%3 == 0:
        k+=1
print(k)

Показать ответ и решение

Переписываем программу и запускаем. Получаем ответ.

Ответ: 3

Ошибка.
Попробуйте повторить позже

Задача 14#49441

Написать программу, которая подсчитывает в массиве количество чисел, кратных 3  . Ответ вывести для a = [1,2,3,4,5,6,7,8,9,10]

Показать ответ и решение
a = [1,2,3,4,5,6,7,8,9,10]
n = len(a)
k = 0
for i in range(n):
    if a[i]%3 == 0:
        k+=1
print(k)

Ответ: 3

Ошибка.
Попробуйте повторить позже

Задача 15#46902

Илья очень любит восклицательные знаки и до ужаса ненавидит гласные буквы. Помогите Илья написать программу, которая получает на вход строку из букв нижнего регистра(т.е. маленькие) и заменяет в ней все гласные буквы на восклицательный знак. Буквы а, я, у, ю, о, е, ё, э, и, ы — гласные. В ответ укажите результат работы программы для строки «даровате».

Показать ответ и решение
  vowel = "аяуюоеёэиы"
  s = input()
  new_s = ""
  for letter in s:
      if letter in vowel:
          new_s += "!"
      else:
          new_s += letter
  print(new_s)

Ответ: д!р!в!т!

Ошибка.
Попробуйте повторить позже

Задача 16#46901

Ксения с помощью нового СЕКРЕТНОГО!!! способа представления чисел хочет представить любое число в единички и нули. Если десятичная цифра числа ниже 5  , то оно заменяется на 0  . Если десятичная цифра числа больше или равна        5  , то оно заменяется на 1  . Помогите Ксении написать программу. В ответ укажите результат работы программы для числа 1946  .

Например: входное число 7219  . Вывод 1001  .

Показать ответ и решение
  n = str(input())
  result = ""
  for num in n:
      if int(num) < 5:
          result += "0"
      else:
          result += "1"
  print(result)

Ответ: 0101

Ошибка.
Попробуйте повторить позже

Задача 17#46900

Анна считает, что числа, заканчивающиеся нулями, скучны. Они могут быть забавными в нашем мире, но не в мире Анны. Помогите Анне избавься от них. Напишите программу которая принимает на вход одно число и делает из него, в случае необходимости, число, которое не будет заканчиваться нулями(т.е. убирает нули справа).

Например: входное число 4500200  . Вывод 45002  .

В ответ укажите результат работы программы для числа 10450250000  .

Показать ответ и решение
  n = int(input())
  if n == 0:
      print(n)
  else:
      while n % 10 == 0:
          n = n // 10
      print(n)

Ответ: 1045025

Ошибка.
Попробуйте повторить позже

Задача 18#46899

Виктория работает водителем автобуса. Однако она стала очень популярна среди жителей города. Из-за большого количества пассажиров, желающих сесть в ее автобус, ей иногда приходится сталкиваться с проблемой нехватки мест в автобусе! Она просит Вас написать простую программу, которая сообщит ей, сможет ли она вместить всех пассажиров. Программа должна принимать три параметра: n  — количество людей, которое может вместить автобус, не считая водителя; k  — количество людей в автобусе, не считая водителя; m  — количество людей, ожидающих посадки в автобус, исключая водителя.

Если места достаточно, возвращается 0  , в противном случае возвращается количество пассажиров, которых Виктория не может взять в автобус. В ответ укажите результат работы программы для параметров: 22  , 7  , 16  .

Показать ответ и решение
  n = int(input())
  k = int(input())
  m = int(input())
  rem = n - k

  if rem <= m:
      print(m - rem)
  else:
      print(0)

Ответ: 1

Ошибка.
Попробуйте повторить позже

Задача 19#46898

Олегу только что исполнилось 18  лет, и он хочет знать, сколько лет ему будет в будущем, например, в 2099  или   3044  году. Его родители не успевают посчитать, поэтому они попросили Вас помочь им, написав программу, которая сможет ответить на бесконечные вопросы Олега.

Ваша задача — написать программу, которая принимает два параметра: год рождения и год, по отношению к которому нужно считать возраст. Поскольку Олег с каждым днем становится все любопытнее, он может вскоре захотеть узнать, сколько лет осталось до его рождения, поэтому ваша программа должна работать как с датами в будущем, так и в прошлом.

Обеспечьте вывод в следующем формате:

  • для дат в будущем «Олегу ... года (лет)»;
  • для дат в прошлом «Олег родится через ... года (лет)»;
  • если год рождения равен запрашиваемому году, то возвращается: «Олег родился в этом году!».

«...» должны быть заменены числом, подсчитанным Вашей программой. В ответ укажите результат работы программы для года рождения 2005  и году, по отношению к которому нужно считать возраст 21391  .

Показать ответ и решение
  year_of_birth = int(input())
  current_year = int(input())
  difference = current_year - year_of_birth

  if difference <= -1:
      print("Олег родится через "+ str(-difference) +" года (лет)")
  elif difference == 0:
      print("Олег родился в этом году!")
  elif difference >= 1:
      print("Олегу " + str(difference) + " года (лет)")

Ответ: Олегу 19386 года (лет)

Ошибка.
Попробуйте повторить позже

Задача 20#46897

Напишите программу, которая принимает на вход имя марафонца и возвращает количество световых мечей, принадлежащих этому человеку. Кстати, единственный человек, владеющий световыми мечами — Лера. У неё их  18  , что является потрясающим количеством световых мечей. У всех остальных марафонцев 0  световых мечей. В ответ укажите результат работы программы для имени «Лера».

Показать ответ и решение
  name = input()
  if name == "Лера":
      print(18)
  else:
      print(0)

Ответ: 18
Рулетка
Вы можете получить скидку в рулетке!