На столе у большого начальника лежит стопка из N заявлений, пронумерованных сверху вниз от 1 до N. Первое заявление он подписывает и убирает из стопки, второе – выбрасывает в мусорную корзину, третье – кладёт вниз стопки. Далее процесс продолжается аналогично, пока заявления в стопке не закончатся.Определите, будет ли заявление с номером K подписано или выброшено, а также номер шага, на котором это произойдёт. Одним шагом является каждая из трёх операций, описанных выше.
Формат входных данных Первая строка входных данных содержит целое число N, вторая строка – целое число K(1 ≤ N ≤ 109, 1 ≤ K ≤ N).
Формат выходных данных В первой строке выведите «Yes», если заявление с номером K будет подписано, и «No», если оно будет выброшено. Во второй строке выведите номер шага, на котором это произойдёт.
стандартный ввод стандартный вывод
4 No
3 5
___________________________________________
5 Yes
3 7
Python
Программа на python
В Питоне это решается так:
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)
Для решения данной задачи можно использовать простой алгоритм, который будет последовательно выполнять действия с заявлениями и отслеживать номер шага, на котором произойдет событие с заявлением 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
```
Пример кода на 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
А табуляция?
Похожие вопросы
- Помогите, как сделать авторизацию в программе на python?
- Оцените первую программу на Python, если не трудно :)
- Оцените программу на Python
- Помогите написать программу на Python, моя версия кода на скрине, вроде всё работает, но автопроверка не проходит.
- Напишите программу на Python
- Выразите число в виде суммы четырех квадратов Нужно написать программу на python
- Очень надо написать программу на Python!!!
- Программа на Python
- Помогите пожалуйста написать 2 программы на Python
- Помогите с программой на python библиотека tkinter