Python

Программа на python

На столе у большого начальника лежит стопка из N заявлений, пронумерованных сверху вниз от 1 до N. Первое заявление он подписывает и убирает из стопки, второе – выбрасывает в мусорную корзину, третье – кладёт вниз стопки. Далее процесс продолжается аналогично, пока заявления в стопке не закончатся.Определите, будет ли заявление с номером K подписано или выброшено, а также номер шага, на котором это произойдёт. Одним шагом является каждая из трёх операций, описанных выше.

Формат входных данных Первая строка входных данных содержит целое число N, вторая строка – целое число K(1 ≤ N ≤ 109, 1 ≤ K ≤ N).

Формат выходных данных В первой строке выведите «Yes», если заявление с номером K будет подписано, и «No», если оно будет выброшено. Во второй строке выведите номер шага, на котором это произойдёт.

стандартный ввод стандартный вывод
4 No
3 5
___________________________________________
5 Yes
3 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)
Дмитрий Картаков
Дмитрий Картаков
87 571
Лучший ответ
Для решения данной задачи можно использовать простой алгоритм, который будет последовательно выполнять действия с заявлениями и отслеживать номер шага, на котором произойдет событие с заявлением K.

Пример кода на Python:

python
n = int(input()) # количество заявлений
k = int(input()) # номер заявления

step = 0 # номер текущего шага
for i in range(1, n+1):
if i == k: # если это заявление K
if step % 3 == 1: # если находится на втором шаге
print("No")
print(step+1)
break
elif step % 3 == 2: # если находится на третьем шаге
print("Yes")
print(step+1)
break
if i != k: # если это не заявление K
step += 1 # увеличиваем номер шага
if step % 3 == 0: # если находится на третьем шаге
n -= 1 # уменьшаем количество заявлений
print("Yes") if k == n else print("No") # если заявление K осталось в стопке, то оно будет подписано, иначе выброшено
print(step+1) # выводим номер шага, на котором произошло событие с заявлением K


Пример работы программы:

```
Входные данные:
4
3
Выходные данные:
No
5

Входные данные:
5
3
Выходные данные:
Yes
7
```
Muxamed Fattaev А табуляция?