23 lines
442 B
Fortran
23 lines
442 B
Fortran
program josephus
|
|
implicit none
|
|
integer :: n, i, k, p
|
|
integer, allocatable :: next(:)
|
|
read *, n, k
|
|
allocate(next(0:n - 1))
|
|
do i = 0, n - 2
|
|
next(i) = i + 1
|
|
end do
|
|
next(n - 1) = 0
|
|
p = 0
|
|
do while(next(p) /= p)
|
|
do i = 1, k - 2
|
|
p = next(p)
|
|
end do
|
|
print *, "Kill", next(p)
|
|
next(p) = next(next(p))
|
|
p = next(p)
|
|
end do
|
|
print *, "Alive", p
|
|
deallocate(next)
|
|
end program
|