Решение турнирных задач на языке Python

Соревнование 2. Задача A. Числа | Задача на Codeforces | решившие
Условие кратко

          
          n = input()
          result = [raw_input().split() for row in range(n)]
          count1 = {}
          for name, score in result:
              count1[name] = count1.get(name, 0) + int(score)
          w = max(count1.values())
          count2 = {}
          for name, score in result:
              count2[name] = count2.get(name, 0) + int(score)
              if count2[name] >= w and count1[name] == w:
                  print name
                  break
          
          

Соревнование 3. Задача A. Кратчайший путь короля | Задача на Codeforces | решившие
Условие кратко

Одинокий король остался совсем один на шахматной доске. Несмотря на одиночество, он вовсе не унывает — ведь ему еще надо сделать так много дел государственной важности. Например, ему надо совершить официальный визит в клетку t. Так как король не привык терять попусту время, он хочет добраться от своего местоположения s до клетки t за наименьшее число ходов. Помогите ему это сделать.
В первую строку выведите n — минимальное число ходов короля. Далее в n строк выведите сами ходы. Каждый ход описывается одной из восьми строк: L, R, U, D, LU, LD, RU или RD. L, R, U, D, соответственно, означают ходы влево, вправо, вверх и вниз (согласно рисунку), двухбуквенные обозначения соответствуют диагональным ходам. Если решений несколько, выведите любое.

          
          

Соревнование 4. Задача A. Числа | Задача на Codeforces | решившие
Условие кратко

          
          w = input()
          print 'YES' if w > 2 and not w & 1 else 'NO'
          
          

Операция x & y битовое and возвращает 1 если соответствующие биты x и y равны 1, иначе возвращает 0. Выражением w & 1 проверяем на нечетность и соотвественно not w & 1 на четность.

Соревнование 12. Задача A. Числа | Задача на Codeforces | решившие
Условие кратко

          
          

Соревнование 13. Задача A. Числа | Задача на Codeforces | решившие
Условие кратко

          
          

Соревнование 14. Задача A. Письмо | Задача на Codeforces | решившие
Условие кратко

          
          n, m = map(int, raw_input().split())
          s = [raw_input() for i in xrange(n)]
          #  n — количество строк, а m — количество столбцов
          x1, y1, x2, y2 = n, m, 0, 0
          for i in xrange(n):
              for j in xrange(m):
                  if s[i][j] == '*':
                      x1 = min(x1, i)
                      y1 = min(y1, j)
                      x2 = max(x2, i)
                      y2 = max(y2, j)
          			
          for i in xrange(x1, x2 + 1):
          	print s[i][y1: y2 + 1]
          
          

Соревнование 16. Задача A. Флаг | Задача на Codeforces | решившие
Условие кратко


          n, m = map(int, raw_input().split())
          b = [raw_input() for row in range(n)]
          row = all(b[i - 1] != b[i] for i in range(1, n))
          column = all(len(set(r)) < 2 for r in b)
          print ['NO', 'YES'][row and column]
          

Функция map принимает в качестве аргументов функцию и список и применяет функцию к каждому элементу списка. n - кол-во строк, m - кол-во столбцов. Встроенная функция set возвращает объект множества, который содержит все элементы объекта переданного функции. Следовательно если длина множества будет меньше 2 значит цвет в столбцах удовлетворяет условию задачи. Функция all возвращает True если все элементы итерируемого объекта имеют истинное значение.

Соревнование 16. Задача B. Вор и спички | Задача на Codeforces | решившие
Условие кратко

На складе m контейнеров, в контенере номер i находится ai коробок спичек, а в каждой коробке bi спичек. Унести можем n коробок. Выбрать не более n коробок так, чтобы количество спичек было максимально.

          
          total_box, m = map(int, raw_input().split()) 	# total_box коробок можем унести; m контейнеров на складе
          container = [0] * 11 					# так как спичек в коробке может быть максимум 10
          for _ in range(m):
              box, matches = map(int, raw_input().split())  # box коробок, matches спичек в коробке
              container[matches] += box
          
          ans = 0
          for i, box in enumerate(container[ : : -1]):
              ans += (10 - i) * min(box, total_box)
              total_box -= min(box, total_box)
              if total_box == 0: break
            
          print ans    
          
          

Создадим одиннацать контейнеров порядковый номер контейнера это кол-во спичек в коробке, а значение это кол-во коробок. Для получения ответа ...

Соревнование 20. Задача A. Файловая система BerOS | Задача на Codeforces | решившие
Условие кратко

          
          input_path = raw_input().split('/')
          path = [i for i in input_path if i is not '']
          print '/' + "/".join(path)
          
          

В первой строке вводим путь и разбиваем его на части. Разделителем служит слэш. Результат это список с именами директорий и пустыми символами на месте повторяющихся слэшей. Во второй строчке выбрасываем из списка элементы со значением ''. У нас остаются только название самих директорий. В третьей строчке выводим список path с помощью функции joint, использую в качестве разделителя "/"

Соревнование 104. Задача A. Блэкджек | Задача на Codeforces | решившие
Условие кратко

          
          print ([0] * 11 + [4] * 9 + [15, 4] + [0] * 4)[input()]
          
          
          
          x = input()
          if x < 11 or x > 21: 
              print 0
          elif x == 20: 
              print 15
          else: 
              print 4
          

Соревнование 106. Задача A. Дурак | Задача на Codeforces | решившие
Условие кратко


          trump = raw_input()
          first, second = raw_input().split()
          cards = '6789TJQKA'
          print ['NO', 'YES'][first[1] == trump and second[1] != trump or first[1] == second[1] and cards.find(first[0]) > cards.find(second[0])]
          

Первая карта бьет вторую, если: первая козырная вторая нет или масти карт равны и первая старше второй. Во всех остальных случаях не бьет.

Соревнование 108. Задача A. Время-палиндром | Задача на Codeforces | решившие
Условие кратко


          h, m = map(int, raw_input().split(':'))
          while True:
              m += 1
              h += m / 60
              m %= 60
              h %= 24
              print '%02d:%02d' % (h, m)
              if h == m % 10 * 10 + m / 10:
                  print '%02d:%02d' % (h, m)
                  break
          

Получаем единицы m % 10 Получаем десятки m / 10 Переставляем цифры местами m % 10 * 10 + m / 10

Соревнование 109. Задача A. Счастливая сумма цифр | Задача на Codeforces | решившие
Условие кратко

          

Соревнование 110. Задача A. Почти счастливое число | Задача на Codeforces | решившие
Условие кратко


          n = raw_input()
          print 'YES' if n.count('4') + n.count('7') in [4, 7] else 'NO'
          

С помощью метода count подсчитываем количество цифр '4' и '7' в числе и если полученное кол-во принадлежит к множеству чисел 4 и 7 выводим 'YES', а если нет, то 'NO'

Соревнование 112. Задача A. Петя и строки | Задача на Codeforces | решившие
Условие кратко


          print cmp(*[raw_input().lower() for x in ' ' * 2])
          

Соревнование 114. Задача A. Cifera | Задача на Codeforces | решившие
Условие кратко

Дано целое число K и целое число L. Вывести в первой строчке 'YES' если L можно представить как K в какой-либо степени и во второй степень - 1. Если нельзя, то просто вывести 'NO'. 2 ≤ K, L ≤ 231-1


          k = int(input())
          l = int(input())
          p = [k ** x for x in range(1, 32)]
          print 'YES\n' + str(p.index(l)) if l in p else 'NO'
          

Соревнование 115. Задача A. Праздник | Задача на Codeforces | решившие
Условие кратко


          

Соревнование 118. Задача A. Упражнение на строки | Задача на Codeforces | решившие
Условие кратко


          print '.'+ '.'.join(raw_input().lower().translate(None, 'ayoeui'))
          

Используются следующие функции:

Соревнование 119. Задача A. Эпическая игра | Задача на Codeforces | решившие
Условие кратко


          

Соревнование 120. Задача A. Лифт | Задача на Codeforces | решившие
Условие кратко


          print ['L', 'R'][(raw_input() == 'front') ^ (raw_input() == '1')]
          

Если использовать двоичный XOR "^", то получим краткую запись решения.

Соревнование 120. Задача B. Что? Где? Когда? | Задача на Codeforces | решившие
Условие кратко


          import sys
          sys.stdin = open('input.txt', 'r')
          sys.stdout = open('output.txt', 'w')
          n, k = map(int, raw_input().split())
          l = [0]*n
          l = map(int,raw_input().split())
          while l[k - 1] == 0:
              k = (k + 1) % (n + 1)
          print str(k)
          

Соревнование 312. Задача A. Чье это предложение? | Задача на Codeforces | решившие
Условие кратко


          
          

Соревнование 313. Задача A. Илья и банковский счет | Задача на Codeforces | решившие
Условие кратко

          
          n = int(raw_input())
          if n < 0:
              n = str(n)
              ans = max (int (n[:-1]), int (n[:-2] + n[-1:]))
              print ans
          else:
              print n    
          
          

Если число положительное или ноль, то сразу выводим его, как ответ. Для отрицательных чисел Преобразуем число в строку. Сформируем с помощью слайсов два числа. Первое, когда удалена цифра единиц n[:-1]. Второе, когда удалена цифра десятков n[:-2] + n[-1:]. Преобразуем полученные строки к целым числам. Далее с помощью стандартной функции max выберем из двух чисел наибольшее. Полученное число будет ответом на задачу.

Соревнование 315. Задача A. Сережа и бутылки | Задача на Codeforces | решившие
Условие кратко


          

Соревнование 317. Задача A. Превосходная пара | Задача на Codeforces | решившие
Условие кратко


          

Соревнование 318. Задача A. Чет и нечет | Задача на Codeforces | решившие
Условие кратко

          
          n, k = map(long, raw_input().split())
          m = (n + 1) / 2
          print 2 * k - 1 if k <= m else 2 * (k - m)
          
          

Соревнование 320. Задача A. Волшебные числа | Задача на Codeforces | решившие
Условие кратко

          
          import re
          exp = re.compile("(1|14|144)+$")
          print 'YES' if re.match(exp, raw_input()) else 'NO'
          
          

Будем использовать стандартный модуль питона для работы с регулярными выражениями re. Основное в задаче правильно составить регулярное выражение:

Соревнование 332. Задача B. Максимальная абсурдность. Задача на Codeforces | решившие
Условие кратко

Сокращенная запись if

'''
X = A if условие else B
 
if условие:
    X = A
else:
    X = B
'''