С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 09.07.2024
Сообщений: 2

Превышено время/память на тесте. Что делать?

09.07.2024, 17:56. Показов 721. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Водяные знаки
ограничение по времени на тест1 секунда
ограничение по памяти на тест256 мегабайт
вводстандартный ввод
выводстандартный вывод
Как известно, Гринготтс – единственный банк в мире, где волшебники хранят свои сбережения. Это самое надежное место в мире после Хогвартса, система безопасности Гринготтса имеет несколько уровней.

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

Водяные знаки наносятся цифрами следующим образом.

Cтроятся блоки цифр
1
22
333
4444
55555
666666
7777777
88888888
999999999
10101010101010101010
1111111111111111111111
121212121212121212121212
13131313131313131313131313
...
Очередное десятичное число записывается столько раз, сколько оно само означает.
Все блоки соединяются в одну длинную последовательность и печатаются на бумаге моноширинным шрифтом, а это значит каждая цифра занимает одинаковое расстояние по ширине. Переход на новую строку происходит сразу, как только заканчиваются позиции в строке, возможно даже в «середине» числа. Как только заканчиваются строки на странице происходит переход на новую страницу.
Вот пример нескольких таких страниц размером 7 строк по 5 символов:

Страница № 1 Страница № 2 Страница № 3 Страница № 4
12233
89999
11111
12121
34444
99999
11111
21313
55555
10101
11111
13131
66666
01010
11121
31313
67777
10101
21212
13131
77788
01010
12121
31313
88888
11111
21212
13141
Проверка достоверности состоит в том, что дракон должен сообщить символ, который видит на странице в конкретной позиции на конкретной строке.

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

количество строк на одной странице N
;
количество символов в строке M
;
номер страницы P
;
номер строки R
;
номер столбца (позиция в строке) C
.
Нумерация страниц, строк и столбцов ведется с 1.
В качестве ответа нужно вывести три символа:

тот, который запрашивается;
символ, стоящий перед запрашиваемым;
символ, стоящий после запрашиваемого.
Предыдущим и следующим нужно считать те символы, которые встретятся до искомой позиции и сразу после при просмотре содержимого страниц слева направо и сверху вниз, перебирая сами страницы в порядке возрастания их номеров.
Входные данные
В первой строке вводится целое число N
- количество строк на 1 странице (1≤N≤1000)
.

В второй строке вводится целое число M
- количество символов в одной строке (1≤M≤1000)
.

В третьей строке вводится целое число P
- номер страницы (1≤P≤1000)
.

В четвертой строке вводится целое число R
- номер строки на странице (1≤R≤N)
.

В пятой строке вводится целое число C
- номер в строке для искомого символа (1≤C≤M)
.

Гарантируется, что P
, R
и C
не равны 1
одновременно.

Выходные данные
В первой строке должна быть выведена одна цифра – искомый символ.

Во второй строке также должна быть выведена одна цифра – символ, предшествовавший искомому при печати спец-бумаги.

В третьей строке опять-таки нужно вывести одну цифру – символ, следующий за искомым при печати спец-бумаги.

Примеры
входные данныеСкопировать
7
5
1
6
3
выходные данныеСкопировать
7
7
8
входные данныеСкопировать
7
5
3
7
5
выходные данныеСкопировать
2
1
1


Написал много программ, у одной время превышенно. А у другой память. Помогите пожалуйста
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
N = int(input())
M = int(input())
P = int(input())
R = int(input())
C = int(input())
 
k = N * M * (P - 1) + M * (R - 1) + C
 
fu = ""
 
 
for i in range(1, k + 1) :
    fu += (str(i) * i)[:k + 1 - len(fu)]
 
print(fu[k - 1], fu[k - 2], fu[k], sep='\n')
Python
1
2
3
4
5
6
7
8
9
10
11
12
N, M, P, R, C = (int(input()) for _ in range(5))
P -= 1
R -= 1
 
k = N * M * P + M * R + C
 
ls = ""
 
 
ls = "".join(str(i) * i for i in range(1, k ))[:k + 1]
 
print(ls[k - 1], ls[k - 2], ls[k], sep='\n')
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.07.2024, 17:56
Ответы с готовыми решениями:

Превышено ограничение памяти на тесте, как исправить?
ограничение по времени на тест 2 секунды ограничение по памяти на тест 512 мегабайт вводстандартный ввод выводстандартный вывод ...

Не понял что делать в тесте
Мне прислали тест там 2 вопроса.1 вопрос вообще не понял что нужно делать сверстать или что?2 непонимаю почему лоадер крутиться...

Проблемка : задачка Квадратное уравнение, на 26 тесте пишет рантайм еррор. Всё просмотрел, не знаю что делать
import math a, b, c = map(int, input().split()) x1 = 0 x2 = 0 dis = b**2 - 4 * a * c krd = math.sqrt(dis) if a == 0: ...

4
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
09.07.2024, 23:39
Цитата Сообщение от MalahitCM Посмотреть сообщение
Написал много программ, у одной время превышенно.
А на пост время лом тратить. Ctrl-C, Ctrl-V, ботаны и так схавают.
0
0 / 0 / 0
Регистрация: 09.07.2024
Сообщений: 2
10.07.2024, 00:27  [ТС]
Извини, первый раз зашёл, ещё не со всем разобрался.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
10.07.2024, 08:05
Цитата Сообщение от MalahitCM Посмотреть сообщение
Гарантируется, что P
, R
и C
не равны 1
одновременно.
(С) В.Маяковский
0
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
10.07.2024, 11:15
Тебе надо найти примерно миллиардный символ в строке. Естественно никакой памяти не хватит на запоминание такого количества символов.
Попробуй посчитать сколько символов занимает строка, выписывая числа от 1 до n. После этого - бинарный поиск.

Добавлено через 4 минуты
И так сойдет:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
# N, M, P, R, C = (int(input()) for _ in range(5))
N, M, P, R, C = 1000, 1000, 1000, 6, 3
P -= 1
R -= 1
 
current = 1
to_find = N * M * P + M * R + C - 1
 
while to_find > current * len(str(current)):
    to_find -= current * len(str(current))
    current += 1
                
print(*((str(current) * current + str(current+1) * (current+1))[to_find-1: to_find+2]))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.07.2024, 11:15
Помогаю со студенческими работами здесь

Время скрипта превышено
Здравствуйте! Радостно проверяла работающий код, как вдруг появилось сообщение о фатальной ошибке-время скрипта превышает 30 сек. Гугол...

Превышено ограничение на время
Здравствуйте. В Eclipse код компилируется, а вот сайт http://ideone.com/ выдает ошибку "Превышено ограничение на время". А сдавать...

Превышено ограничение на время
При компиляции выходит сообщение "Превышено ограничение на время". Помогите разобраться в чем ошибка... using System; using...

Превышено время работы
Сабж:почему при загрузке задачи на сервер, выдается ошибка мол превышено время работы программы: Условие задачи:...

Массив сожрал память,что делать?
Добрый день! Есть данные ,которые сохранены в бинарном формате.В данном файле в заголовке описываются поля и их тип. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru