Имеется
бесконечное количество лампочек, находящихся в выключенном состоянии. На каждом
этапе игры включаются (если они были выключены) или выключаются (если они были
включены) все те лампочки, номера которых кратны номеру этапа игры.
Определить
состояние n-той лампочки после n-го этапа игры.
Вход. Сначала задано количество тестов t (1 ≤ t
≤ 10). Далее следует t строк с указанием номера n (0 < n
≤ 105) этапа игры.
Выход. Вывести t
строк с указанием состояния соответствующей лампочки: 0 – лампочка выключена, 1
– включена.
Пример
входа |
Пример
выхода |
2 1 5 |
1 0 |
математика
Анализ алгоритма
Пятая лампочка
поменяет свое состояние на первой и пятой фазе игры (так как 5 делится только
на 1 и 5). Поскольку изначально она была выключена, то после пятой фазы она
также будет выключенной. Если n имеет четное число делителей, то после n
-ой фазы она снова будет выключенной. И наоборот, если n имеет нечетное
количество делителей, то после n -ой фазы она будет включенной. Случай
нечетного количества делителей возможен только если n является полным
квадратом. Если число является полным квадратом, то все его простые делители
входят в его разложение на простые множители с четными степенями. Если n
= , то его число делителей равно d(n) = (a1 + 1)
* (a2 + 1) * … * (ak + 1). Если n –
полный квадрат, то все ai четны. А значение d(n) нечетно, так как является
произведением нечетных чисел.
Реализация алгоритма
Читаем входные
данные. Если значение n является полным квадратом, то выводим 1. Иначе
выводим 0.
scanf("%d",&tests);
while(tests--)
{
scanf("%d",&n);
r = (int)sqrt(n);
printf("%d\n",r*r
== n);
}
Java реализация
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
int tests = con.nextInt();
while(tests-- > 0)
{
int n = con.nextInt();
int r = (int)Math.sqrt(1.0*n);
System.out.println(r*r == n ? 1 : 0);
}
}
}
Python реализация
import math
tests = int(input())
while (tests > 0):
tests -= 1
n = int(input())
sqr = math.sqrt(n)
if (sqr == int(sqr)):
print(1)
else :
print(0)