Acmp ru ответы python

Решение задачи acmp.ru на Python

Совсем недавно Вася занялся программированием и решил реализовать собственную программу для игры в шахматы. Но у него возникла проблема определения правильности хода конем, который делает пользователь. Т.е. если пользователь вводит значение «C7-D5», то программа должна определить это как правильный ход, если же введено «E2-E4», то ход неверный. Так же нужно проверить корректность записи ввода: если например, введено «D9-N5», то программа должна определить данную запись как ошибочную. Помогите ему осуществить эту проверку! Входные данные
В единственной строке входного файла INPUT.TXT записан текст хода (непустая строка), который указал пользователь. Пользователь не может ввести строку, длиннее 5 символов. Выходные данные
В выходной файл OUTPUT.TXT нужно вывести «YES», если указанный ход конем верный, если же запись корректна (в смысле правильности записи координат), но ход невозможен, то нужно вывести «NO». Если же координаты не определены или заданы некорректно, то вывести сообщение «ERROR».

import re i=open('input.txt') o=open('output.txt', 'w') x='' j=i.read() m=re.fullmatch(r'[A-H]3-[A-H]7', j) if m: if j=='C7-D5': x='YES' else: x='NO' else: x='ERROR' o.write(x) i.close() o.close() 

застревает на 1

Прям вообще-вообще ни одного? А сам acmp.ru что-нибудь по этому поводу пишет? Тесты просто не проходят или возникает ошибка выполнения? Питон точно третий на acmp.ru? – andreymal 26 сен ’18 в 15:24

Читайте также:  Html страницы в drupal

Если работа прерывается сразу после первого теста, то остаётся только посоветовать писать сразу полноценное решение, а не заглушку как у вас. Кстати применяйте strip() к входной строке, чтобы отсечь символ переноса строки, если вдруг он в тестах есть – andreymal 26 сен ’18 в 16:22

Источник

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

Мои варианты решения олимпиадных задач с портала олимпиадного программирования acmp.ru написанные на языке python

anton2750/acmp.ru

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

Мои варианты решения задач с портала олимпиадного программирования acmp.ru написанные на языке python

One line, multiple variables:

with open("input.txt", "r") as f: with open("output.txt", "w") as o: [a, b, c] = list(map(int, f.readline().split())) o.write(f'  ') 
with open("input.txt", "r") as f: with open("output.txt", "w") as o: a = int(f.readline()) o.write(f'') 
with open("input.txt", "r") as f: with open("output.txt", "w") as o: a = f.readline().strip() b = f.readline().strip() o.write(f'') o.write(f'') 

One integer variable from/to console:

About

Мои варианты решения олимпиадных задач с портала олимпиадного программирования acmp.ru написанные на языке python

Источник

Решение задачи acmp.ru на Python «Время прибыти»

Мое решение не проходит 11 тест. Не могу понять, где именно ошибка, вроде на всех данных, которые я проверял всё работает корректно. Буду очень благодарен за помощь! Вроде всё проверил, но так и не проходит тест

Задано время отправления поезда и время в пути до конечной станции. Требуется написать программу, которая найдет время прибытия этого поезда (возможно, в другие сутки).

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

Входной файл INPUT.TXT содержит две строки. В первой строке задано время отправления, а во второй строке – время в пути. Время отправления задается в формате «HH:MM», где HH время в часах, которое принимает значение от 00 до 23, ММ – время в минутах, которое принимает значение от 00 до 59. Время в пути задается двумя неотрицательными целыми числами – количество часов и количество минут. Числа разделяются одним пробелом. Количество часов не превышает 120, минут – 59.

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

Выходной файл OUTPUT.TXT должен содержать одну строку – время прибытия поезда на конечную станцию. Формат вывода этого времени совпадает с форматом ввода времени отправления.

Вот само решение(т.к код не самый читаемый добавил комментарии):

 inp = open('222.txt','r') out = open ('11.txt','w') a = inp.read().split()# прочитал файл #получаю время отправления : часы и минуты t = a[0] h = int(t[:2]) m = int(t[3:]) # рассмотриваю отдельно случай ,когда время отправления равняется 00:00 if h == 0 and m == 0: # перевожу в минуты время в пути c =int(a[1]) * 60 + int(a[2]) # рассматриваю случай с переход через сутки if c >= 1440: q = abs(1440 - c) while q > 1440: q = abs(1440 - q) # получаю часы и минуты hours = q // 60 minutes = q % 60 #записываю ответ ans_hours = str(hours) ans_minutes = str(minutes) if len(ans_hours) == 1: ans_hours = '0' + ans_hours if len(ans_minutes) == 1: ans_minutes = '0' + ans_minutes out.write(ans_hours + ':' + ans_minutes) # рассматриваю случай ,когда перехода через сутки нету else: # получаю часы и минуты hours = c // 60 minutes = c % 60 # записываю ответ ans_hours = str(hours) ans_minutes = str(minutes) if len(ans_hours) == 1: ans_hours = '0' + ans_hours if len(ans_minutes) == 1: ans_minutes = '0' + ans_minutes out.write(ans_hours + ':' + ans_minutes) # рассматриваю общий случай else: # перевожу в минуты время в пути и время отправления m_b = h*60 + m c = m_b+int(a[1])*60+int(a[2]) # рассматриваю случай с переход через сутки if c >=1440: q = abs(1440 - c) while q > 1440: q = abs(1440 - q) # получаю часы и минуты hours = q //60 minutes = q %60 # записываю ответ ans_hours = str(hours) ans_minutes = str(minutes) if len(ans_hours)==1: ans_hours = '0'+ans_hours if len(ans_minutes) == 1: ans_minutes = '0' + ans_minutes out.write(ans_hours+':'+ans_minutes) # рассматриваю случай с переход через сутки else: # получаю часы и минуты hours = c // 60 minutes = c % 60 # записываю ответ ans_hours = str(hours) ans_minutes = str(minutes) if len(ans_hours) == 1: ans_hours = '0' + ans_hours if len(ans_minutes) == 1: ans_minutes = '0' + ans_minutes out.write(ans_hours + ':' + ans_minutes) 

Ответы (1 шт):

Вариант №1

1. Решение можно упростить, осознав, что количество часов большее чем 24, на ответ не влияет. Прибытие поезда через 36 часов, означает прибытие через 1 сутки и 12 часов. Время прибытия от количества суток не меняется и будет одинаковым хоть через 1 сутки, хоть через 3-е суток.

Поезд отправился в 10:10 , был в пути 56 часов 35 минут.

56 часов 35 минут это 48 часов (2-е суток) + 8 часов 35 минут . Сутки нам не нужно учитывать, поэтому их можно отбросить.

Таким образом, время прибытия будет 10:10 + 8 часов 35 минут = 18:45 .

2. Можно все вычисления производить в минутах, чтобы не отслеживать, когда в результате сложения минут, появляется дополнительный час.

10:10 + 5:55 можно представить как 610 минут + 295 минут = 905 минут . Потом перевести минуты обратно в формат часы:минуты : 905 минут = 15:05

departure_hours, departure_minutes = map(int, input().split(':')) duration_hours, duration_minutes = map(int, input().split()) # Переводим значения времени в минуты. departure_time_in_minutes = departure_hours * 60 + departure_minutes duration_time_in_minutes = duration_hours * 60 + duration_minutes # Вычисляем время прибытия в минутах. arrival_time_in_minutes = departure_time_in_minutes + duration_time_in_minutes ### Переводим время в минутах обратно в формат "часы:минуты": # Часы узнаём, разделив время в минутах на 60. # Количество часов кратное 24 можно отбросить с помощью "% 24". arrival_hours = (arrival_time_in_minutes // 60) % 24 # Количество минут это то, что осталось от деления на 60 arrival_minutes = arrival_time_in_minutes % 60 print(f":") 

Вариант №2

Можно обойтись и без перевода в минуты, в данном случае в этом нет необходимости. Тогда решение получается проще. Однако приём с переводом временных значений к одному знаменателю, будь то минуты или секунды, является типичным для задач подобного рода, поэтому оставлю его как Вариант №1.

departure_hours, departure_minutes = map(int, input().split(':')) duration_hours, duration_minutes = map(int, input().split()) carry_hour, arrival_minutes = divmod((departure_minutes + duration_minutes), 60) arrival_hours = (departure_hours + duration_hours + carry_hour) % 24 print(f":") 

Источник

Лентяй Задача acmp 694 python

Задача лентяй
Решал задачу ,задача прошла на 50 % . Не прошёл второй тест Студент Валера являет собой.

Задача с acmp
всем привет, помогите пожалуйста с решением задачи из замечательного архива ********. Одной из.

Задача с acmp
Короли прошлого создали великую империю, в которой было N городов, и соединили их M двусторонними.

Школы. Задача с ACMP
Помогите, пожалуйста решить задачу с ACMP, три дня мучаюсь, не получается, нужен код на С++. С.

Боги (задача с acmp)
Здравствуйте. Проблема с решением задачи "Боги" (_http://********/?main=task&id_task=93). Вот.

Эксперт Python

if j in range(ar[i][0],ar[i][1]+1) and range(ar[i+1][0],ar[i+1][1]+1):

после слова AND точно должно быть просто range? если там не пустой объект то всегда будет True
может там тоже надо проверить вхождение какой то переменной в промежуток?

Студент Валера являет собой классический пример лентяя. На занятия он практически не ходит, и только в конце семестра появляется в университете и сдает ”хвосты”. Его заветная мечта: найти такой день, когда можно будет сдать сразу все долги. У него есть расписание работы преподавателей, из которого точно известно, с какого и по какой день месяца каждый преподаватель ежедневно будет доступен.

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

В первой строке входного файла INPUT.TXT содержится натуральное число N – количество предметов, которые нужно сдать Валере (N ≤ 100). Далее идет N строк, каждая из которых состоит из двух чисел A и B, задающих отрезок работы очередного преподавателя (1 ≤ A ≤ B ≤ 31).
Выходные данные

В выходной файл OUTPUT.TXT выведите «YES», если возможно встретить всех преподавателей за один день, или «NO», если это сделать невозможно.

yan245, зачем вы всё так усложняете..
Подсказка: нужно только найти максимальный a и минимальный b. И сравнить.

Источник

Python-сообщество

[RSS Feed]

  • Начало
  • » Python для новичков
  • » Задача с acmp №317 — Подарки Деда Мороза

#1 Май 30, 2017 18:06:27

Задача с acmp №317 — Подарки Деда Мороза

Никак не могу сдать. Время у задачи 0.5 — у меня 0.55 — 0.6. Подскажите, как ускорить?

Ириска весит X грамм, мандарин – Y грамм, пряник – Z грамм.
Требуется написать программу, которая определит, сколько различных вариантов подарков весом ровно W грамм может сделать Дед Мороз.

Входные данные:
четыре целых числа X, Y, Z и W (1 ≤ X, Y, Z ≤ 100, 1 ≤ W ≤ 1000)

Выходные данные:
целое число – количество вариантов подарков

x, y, z, w = map(int, input().split()) count = 0 for i in range(0, w // x + 1): for j in range(0 , (w - (x * i)) // y + 1): if (w - (x * i + y * j)) % z == 0: count += 1 print(count) 

#2 Май 30, 2017 19:03:48

Задача с acmp №317 — Подарки Деда Мороза

Ваш алгоритм можно опимизировать, если вынести повторяющуюся математику из цикла и убрать дублирование кода

x, y, z, w = map(int, input().split()) count = 0 for i in range(0, w // x + 1): rest = w - x * i for j in range(0 , rest // y + 1): if (rest - y * j) % z == 0: count += 1 print(count) 

#3 Май 30, 2017 19:21:41

Задача с acmp №317 — Подарки Деда Мороза

FishHook
Ваш алгоритм можно опимизировать, если вынести повторяющуюся математику из цикла и убрать дублирование кода

#4 Май 30, 2017 19:32:11

Задача с acmp №317 — Подарки Деда Мороза

for i in range(0, w // x + 1): for j in range(0 , (w - (x * i)) // y + 1): # w - x * i if (w - (x * i + y * j)) % z == 0: # w - x * i те же самые расчеты в цикле! 

Отредактировано FishHook (Май 30, 2017 19:32:55)

Источник

Оцените статью