"""
Task 75

Дано бесконечное число тумблеров (переключателей), которые находятся в выключенном состоянии. На каждом шаге включаются
 (если они были выключены) или выключаются (если они были включены) все те тумблеры, номера которых (
 нумерация с 1) кратны номеру шага.

Нужно определить состояние N-й лампочки после N-го шага.

Входные данные: N - номера шага, где N - натуральное число, N <= 10^5.

Вывод: вывести состояние тумблера после N-го шага.

Пример:
1. N = 1, Status = 1
2. N = 5, Status = 0

"""

'''
Идея простая:

Вариант 1:
Создаём список, каждый элемент которого - это тумблер.
Прогоняем согласно условию все тумблеры и изменяем их состояния.
Создаём список, в который сохраняем позиции тех тумблеров, которые оказались включёнными.
Проверяем, попадает ли тумблер с введённой позицией в перечисленные позиции во втором списке или нет?
При совпадении - тумблер включён.
При несовпадении - тумблер выключён.

Вариант 2:
Смысл приблизительно тот же. 
Зная, что включёнными остаются только те тумблеры, значение позиции которых равно квадрату какого-то числа, то просто 
вычисляем квадратный корень из заданного числа, равного номеру тумблера. Если число целое, то тумблер включён. Нет? 
Выключен! 
Такой вариант изящнее. 
'''


# Вариант 1
def switch_position(n):
    if n != 0:
        # создаём список с количеством элементов на один больше, чем количество тумблеров, чтобы
        # позиция последнего тумблера тоже учитывалась в итерации
        tumbler = [0] * (n + 1)
        my_list = []  # список для позиций тумблеров, которые остануться включёнными после всех итераций
        for i in range(len(tumbler) + 1):  # Прогоняем все тумблеры на включение - выключение
            for j in range(0, len(tumbler), i + 1):
                if tumbler[j] == 0:
                    tumbler[j] = 1
                else:
                    tumbler[j] = 0
        for k in range(len(tumbler)):
            if tumbler[k] == 1:
                my_list.append(k)
        if n not in my_list:  # проверяем равенство N элементам списка
            print("N = " + str(n) + ", Status = 0")
        else:
            print("N = " + str(n) + ", Status = 1")
    else:
        print("Not correct switch's number!")
    return


# Вариант 2
import math


def sqrt_value(n):
    if n != 0:
        res = math.sqrt(n)
        if math.sqrt(n) == int(res):
            #    или так: if n**0.5%1 == 0.0
            print("N = " + str(n) + ", Status = 1")
        else:
            print("N = " + str(n) + ", Status = 0")
    else:
        print("Not correct switch's number!")
    return


switch_position(5)
sqrt_value(5)
switch_position(36)
sqrt_value(36)
switch_position(72)
sqrt_value(72)
switch_position(121)
sqrt_value(121)
switch_position(256)
sqrt_value(256)
