Даю 23 балла за быстрый ответ !
В операционной системе Winux многозадачность реализована следующим образом: каждую секунду задача, которая была активна (то есть находилась в начале списка задач), ставится в конец списка задач, а все остальные задачи сдвигаются на одну к началу. В одной очень секретной лаборатории компьютер под управлением Winux используется для решения вычислительных задач. Вычислениями занимается задача solve. С утра список состоял из N задач, причём задача solve существовала в нескольких экземплярах, каким-то образом распределённых по списку. Вечером в списке по-прежнему было N задач; более того, все экземпляры задачи solve были ровно на тех же местах в списке, что и с утра, но при этом список задач в целом различался (то есть на какой-то позиции с утра и вечером стояли разные задачи). При этом за день ни одна задача не должна была завершиться и ни одна новая задача не должна была быть запущена. Вы — разработчик модуля защиты информации в системе Winux. Ваша задача — по заданному N определить, обязательно ли из полученной информации следует, что как минимум одна задача завершилась и как минимум одна задача была запущена, или же ситуация могла произойти естественным образом. Так как лаборатория секретная, никакой другой информации, кроме числа задач, у Вас нет.
Answers & Comments
Само объяснение очень большое. Делится им смысла не вижу. В целом все сводится к проверке числа на простоту. Причем надо это сделать с помощью быстрого алгоритма.
Следующее решение приведено на языке Python 3.4.3:
# is_prime() - функция проверки числа на простоту.
def is_prime( num ):
d = 2
while d * d <= num and num % d != 0:
d += 1
return d * d > num
# получаем число с консоли
N = int( input() )
# проверяем и выводим нужный ответ
if is_prime( N ):
print( 'Danger' )
else:
print( 'Safe' )