Помогите дописать код на Python
Тролль Зумбагеш купил автомобиль! Теперь ему можно не ходить по маршруту, а ездить с комфортом. Но вот незадача - в наши края внезапно пришла зима...
Теперь Зумбагешу срочно требуется сменить колёса на своей машине с летних на зимние. Одно колесо крепится n болтами, болты расположены по кругу. Пронумеруем их по часовой стрелке от 0 до n-1. Один болт на каждом колесе - особый, называется "секретка". Будем считать, что секретка имеет номер s.
В руководстве по обслуживанию автомобиля Зумбагеш прочитал: "При закручивании болтов колеса закручивайте их с шагом через k болтов, передвигаясь по часовой стрелке, секретку закручивайте последней."
После этого он крепко задумался: а с какого по номеру болта нужно начинать процесс закручивания, чтобы закручивая каждый раз через k болтов по часовой стрелке, закрутить в итоге все, а последней закрутить секретку?
Input format В единственной строке содержится три числа через пробел n, k, s - общее число болтов, шаг, то есть через сколько болтов нужно закручивать и номер секретки. 3 ≤ n ≤ 1018, 0 ≤ k ≤ 1018, 0 ≤ s ≤ n-1. Гарантируется, что ответ существует, то есть найдется болт, начиная с которого можно, закручивая с шагом через k болтов по часовой стрелке, закрутить все болты, последним закрутив секретку.
Output format Вывести одно число - номер болта, начиная с которого можно, закручивая с шагом через k болтов по часовой стрелке, закрутить все болты, последним закрутив секретку.
import random
from array import array
n, k, s = (int(i) for i in input().split())
my_array = array('i', [])
for numbers in range(n):
my_array.append(numbers)
for i in my_array:
if i != s:
не могу найти сам алгоритм вывода нужного болта
Ответы (1 шт):
алгоритм элементарный
если, к примеру, k - простое число, то она вообще решается в 1 строчку через деления с остатком :)
но для общего решения
перебрать начальные болты от
0доkсоздать список с размером равным кол-ву болтов и записать в них
Falseустановить переменную с кол-вом незавинченных болтов в
nходить в цикле пока не будут завинчены все болты (т.е. кол-во незавинченных болтов не станет равным
0)проверить является ли текущий болт секретной и был ли он завинчен ранее (для чего нужен список созданный выше)
если болт - секретка, а кол-во оставшихся незавинченных болтовне равно
1- выйти из цикла и перейти к следующему начальному болтув списке для i-ого текущего болта установить значение
True(болт завинчен)уменьшить кол-во незавинченных болтов
если последний незавинченный болт - секретна - вывести информацию о найденной позиции первого болта