Задачки ко 2 февраля 2021

Вход в проверяющую систему

A: Робот-черепашка

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

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

Вводится одна строка из заглавных латинских букв S, L, R, описывающая программу для робота. Общее число команд в программе не превышает 200, при этом команд S — не более 50.

Выведите, сколько шагов будет сделано (то есть выполнено команд S) прежде, чем робот впервые окажется в том месте, через которое он уже проходил. Если такого не произойдет, выведите в выходной файл число –1.

Ввод Вывод
SSLSLSLSSRSRS
5
LSSSS
-1

B: Таймер

Таймер - это часы, которые умеют подавать звуковой сигнал по прошествии некоторого периода времени. Напишите программу, которая определяет, когда должен быть подан звуковой сигнал.

В первой строке вводится текущее время в формате ЧЧ:ММ:СС (с ведущими нулями). При этом оно удовлетворяет ограничениям: ЧЧ - от 00 до 23, ММ и СС - от 00 до 60.

Во второй строке вводится интервал времени, который должен быть измерен. Интервал записывается в формате Ч:М:С (где Ч, М и С - от 0 до 109, без ведущих нулей). Дополнительно если Ч=0 (или Ч=0 и М=0), то они могут быть опущены. Например, 100:60 на самом деле означает 100 минут 60 секунд, что то же самое, что 101:0 или 1:41:0. А 42 обозначает 42 секунды. 100:100:100 - 100 часов, 100 минут, 100 секунд, что то же самое, что 101:41:40.

Выведите в формате ЧЧ:ММ:СС время, во сколько прозвучит звуковой сигнал. При этом если сигнал прозвучит не в текущие сутки, то дальше должна следовать запись +<кол во> days. Например, если сигнал прозвучит на следующий день – то +1 days.

Ввод Вывод
01:01:01 
48:0:0
01:01:01+2 days
01:01:01
58:119
02:01:00
23:59:59
1
00:00:00+1 days

C: Многочлен

Васе задали несколько однотипных задач по математике: «найти значение многочлена». Он хочет написать программу, которая по заданному многочлену и значению x находила бы ответ. Напишите такую программу!

В первой строке записан многочлен в виде суммы одночленов. Между одночленами находится знак + или –. Перед первым одночленом может быть знак –. Одночлен записывается как
[<Коэффициент>*]x[^<Степень>]
или
<Коэффициент>
где <Коэффициент> — натуральное число, не превосходящее 100, x — символ переменной (всегда маленькая латинская буква x), <Степень> — натуральное число, не превосходящее 4. Параметры, взятые в квадратные скобки, могут быть опущены. Во второй строке записано одно целое число — значение x.

Нужно вывести одно число — значение данного многочлена при данном значении x.

Все числа во входных данных по модулю не превосходят 100. Количество одночленов не более 10 (могут быть одночлены одинаковой степени).

Ввод Вывод
8*x+5
7
61
-2+x^1-3*x^2+x^2+100*x^3-2*x
0
-2

Задача Зю. Что за бред

Внимание! Решение этой задачи записывается и сдается на листочке, а в проверяющей системе этой задачи нет!
Прежде, чем решать задачу, прочитайте ее условие до самого конца (до слов "конец условия задачи Зю")!

Виктор Александрович и Мария Зауровна в ночь перед уроком пытались решить такую задачу:

Дана строчка, описывающая время, которое показывают часы, в формате ЧЧ:ММ:СС - где ЧЧ - это две цифры, задающие часы, ММ - две цифры, задающие минуты и СС - две цифры задающие секунды. Например: 08:30:00. Требуется напечатать, сколько секунд прошло с начала суток до того момента, как на часах появилась эта запись. Так, при вводе 08:30:00 должно печататься 30600.

Пример ввода Пример вывода
15:43:10
56590

Виктор Александрович и Мария Зауровна написали 4 программы, решающие эту задачу. Определите, какие из этих программ правильные, а какие - нет. Для программ, которые вы считаете правильными, просто укажите, что они правильные. А для программ, которые неверные, укажите пример, на котором программа будет работать неверно.

Решение zu1
# -*- coding: utf-8 -*-

a = input()


for i in range(24*60*60):   	# Перебираем все моменты времеи в течение суток
	hh = i // 3600				# Если с начала суток прошло i секунд, то полных часов - i // 3600
	mm = i // 60 % 60			# Здесь вычисляем, сколько минут должны показывать часы
	ss = i % 60					# Здесь вычисляем, сколько секунд должно быть на часах

	if str(hh) + ":" + str(mm) + ":" + str(ss) == a:		# Проверяем - совпадает ли то, что покажут часы с тем, что нам ввели. Если да, то печатаем и прерываем цикл
		print(i)
		break
Решение zu2
# -*- coding: utf-8 -*-

a = input()

if a[0] == "0":
	h = int(a[1])
else:
	h = int(a[0]) * 10 + int(a[1])

if a[3] == "0":
	m = int(a[4])
else:
	m = int(a[3]) * 10 + int(a[4])

if a[6] == "0":
	s = int(a[6])
else:
	s = int(a[6]) * 10 + int(a[7])


print(h * 3600 + m * 60 + s)
Решение zu3
# -*- coding: utf-8 -*-

a = input()

hh = int(a[:2])
mm = int(a[3:5])
ss = int(a[6:])

print(hh * 60 * 60 + mm * 60 + ss)
Решение zu4
# -*- coding: utf-8 -*-

a = input()

for x in range(25):
	hh = ("00" + str(x))[-2:]
	if hh + ":00:00" > a:
		ans = (x-1) * 3600
		break

b = a[3:]

for x in range(61):
	mm = ("00" + str(x))[-2:]
	if mm + ":00" > b:
		ans += (x-1) * 60
		break

c = b[3:]

for x in range(61):
	ss = ("00" + str(x))[-2:]
	if ss > c:
		ans += (x-1) 
		break

print(ans)

Конец условия задачи Зю

Задачки к 9 февраля 2021

Условия задач C (ее условие есть выше, но пусть будет еще раз), D, E: pdf, word.