На столе у большого начальника лежит стопка из N заявлений, пронумерованных сверху вниз от 1 до N . Первое заявление он подписывает и убирает из стопки, второе — выбрасывает в мусорную корзину, третье — кладёт вниз стопки. Далее процесс продолжается аналогично, пока заявления в стопке не закончатся. Определите, будет ли заявление с номером K подписано или выброшено, а также номер шага, на котором это произойдёт. Одним шагом является каждая из трёх операций, описанных выше. Формат входных данных Первая строка входных данных содержит целое число N , вторая строка — целое число K (1≤N≤109 , 1≤K≤N ). Формат выходных данных В первой строке выведите «Yes», если заявление с номером K будет подписано, и «No», если оно будет выброшено. Во второй строке выведите номер шага, на котором это произойдёт. Система оценки Решения, правильно работающие при N≤1000 , будут оцениваться в 40 баллов. Решения, правильно работающие при N≤5⋅105 , будут оцениваться в 60 баллов. Замечание В первом примере из условия в стопке находятся 4 заявления: (1 , 2 , 3 , 4 ). Заявление 1 подписывается, заявление 2 выкидывается, заявление 3 перекладывается в конец. После выполнения трёх шагов в стопке будут заявления (4 , 3 ). Поэтому на пятом шаге заявление 3 будет выброшено. Во втором примере из условия стопка имеет вид (1 , 2 , 3 , 4 , 5 ). После выполнения трёх шагов стопка будет иметь вид (4 , 5 , 3 ). За следующие три шага заявление 4 будет подписано, заявление 5 будет выброшено, а заявление 3 — переложено в конец стопки (в которой ничего не будет, кроме заявления 3 ). Поэтому после шести шагов стопка будет иметь вид (3 ). На седьмом шаге заявление 3 будет подписано. Ввод Вывод 4 3 No 5 5 3 Yes 7
принимаются грамотные решения без типа "че такая тупая? сама решить не можешь?" и подобное
Домашние задания: Информатика
Олимпиада по информатике
Вот так будет работать:
n, k = map(int, map(input, ('',) * 2))
rs, r, steps = list(range(1, n + 1)), 2, 0
while r == 2:
p = rs.index(k)
r = p % 3
l = len(rs) - len(rs) % 3
steps += l if r == 2 else p + 1
rs = rs[l:] + rs[2::3]
print(('Yes', 'No')[r], steps, sep = '\n)
Правда, здесь много конкатенаций списков. В другой копии этого вопроса сделано на деках, должно быть пошустрее, т.к. там связный список под капотом.Здравствуйте. Я могу помочь вам решить эту задачу, используя Python. Вот мой алгоритм:
1. Определить функцию, которая принимает номер заявления K и возвращает True, если оно будет подписано, и False, если оно будет выброшено.
2. Использовать цикл while для симуляции процесса подписания и выбрасывания заявлений.
3. Начать с номера заявления 1 и переменной count, равной 0.
4. Повторять следующие шаги, пока номер заявления не станет равным K или не превысит N:
- Если номер заявления делится на 3 без остатка, то переложить его в конец стопки и увеличить его на N.
- Если номер заявления делится на 2 без остатка, то выбросить его и увеличить count на 1.
- В противном случае подписать его и увеличить count на 1.
5. Вернуть True, если номер заявления равен K, и False в противном случае.
Вот код на Python:
1. Определить функцию, которая принимает номер заявления K и возвращает True, если оно будет подписано, и False, если оно будет выброшено.
2. Использовать цикл while для симуляции процесса подписания и выбрасывания заявлений.
3. Начать с номера заявления 1 и переменной count, равной 0.
4. Повторять следующие шаги, пока номер заявления не станет равным K или не превысит N:
- Если номер заявления делится на 3 без остатка, то переложить его в конец стопки и увеличить его на N.
- Если номер заявления делится на 2 без остатка, то выбросить его и увеличить count на 1.
- В противном случае подписать его и увеличить count на 1.
5. Вернуть True, если номер заявления равен K, и False в противном случае.
Вот код на Python:
def is_signed(K):
# N is the number of statements in the pile
N = int(input("Enter the number of statements: "))
# num is the current statement number
num = 1
# count is the number of steps
count = 0
# loop until num reaches K or exceeds N
while num
Владимир Дениев
спасибо
Владимир Дениев
только код ошибку выдаёт
Владимир Дениев
пишет:0 из 100
Владимир Дениев
все равно неверно
Кира Болдакова
Использование тривиальных ничего не поясняющих комментариев к каждой строчке неработающего кода напоминает мне попытку замазать трещины в стене дома птичьим дерьмом в надежде, что это предотвратит разрушение.
Татьяна Кудрекова
тоже чат гпт?)