type Door
= (Int, Boolean
)
def main
(args
: Array
[String
]) { val noOfDoors
= new Scanner
(System.
in) nextInt
val doors
= List.
tabulate(noOfDoors
)(x
=> (x +
1,
false)) pass(1, noOfDoors, doors).filter(_._2).foreach(x => println(x._1))
}
def pass
(passNo
: Int, passes
: Int, doors
: Doors
): Doors
= { if (passes
> 0) pass
(passNo +
1, passes -
1, doors.
map(toggle
(passNo,
_))) }
def toggle
(passNo
: Int, door
: Door
) = { val (doorNo, doorState
) = door
if (doorNo
% passNo
== 0) (doorNo,
!doorState
) else door
}
}
aW1wb3J0IGphdmEudXRpbC5TY2FubmVyCgpvYmplY3QgTWFpbiB7CiAgdHlwZSBEb29yID0gKEludCwgQm9vbGVhbikKICB0eXBlIERvb3JzID0gTGlzdFtEb29yXQoKICBkZWYgbWFpbihhcmdzOiBBcnJheVtTdHJpbmddKSB7CiAgICB2YWwgbm9PZkRvb3JzID0gbmV3IFNjYW5uZXIoU3lzdGVtLmluKSBuZXh0SW50CiAgICB2YWwgZG9vcnMgPSBMaXN0LnRhYnVsYXRlKG5vT2ZEb29ycykoeCA9PiAoeCArIDEsIGZhbHNlKSkKICAgIHBhc3MoMSwgbm9PZkRvb3JzLCBkb29ycykuZmlsdGVyKF8uXzIpLmZvcmVhY2goeCA9PiBwcmludGxuKHguXzEpKQogIH0KCiAgZGVmIHBhc3MocGFzc05vOiBJbnQsIHBhc3NlczogSW50LCBkb29yczogRG9vcnMpOiBEb29ycyA9IHsKICAgIGlmIChwYXNzZXMgPiAwKSBwYXNzKHBhc3NObyArIDEsIHBhc3NlcyAtIDEsIGRvb3JzLm1hcCh0b2dnbGUocGFzc05vLCBfKSkpCiAgICBlbHNlIGRvb3JzCiAgfQoKICBkZWYgdG9nZ2xlKHBhc3NObzogSW50LCBkb29yOiBEb29yKSA9IHsKICAgIHZhbCAoZG9vck5vLCBkb29yU3RhdGUpID0gZG9vcgogICAgaWYgKGRvb3JObyAlIHBhc3NObyA9PSAwKSAoZG9vck5vLCAhZG9vclN0YXRlKSBlbHNlIGRvb3IKICB9Cn0=