Solution
10,32,54,76,98

Xpress-Mosel Model

model 'onroad'

! Description  : On the road
! Source       : Poniachik, J. & L, (1998), Hard-to-solve Brainteasers, Sterling  
! Date written : Xpress-MP 4/12/99, Mosel 19/4/03
! Written by   : M J Chlond

  uses 'mmxprs'

  declarations
    N = 1..10
    x: array(N,N) of mpvar ! x(i,j) = 1 if digit (i-1) is in position j
    d: mpvar
  end-declarations

  closest:= sum(i in N) 10*(i-1)*x(i,1)+sum(i in N) (i-1)*x(i,2)

  forall(i in N)
    dcon(i):= sum(j in N) x(i,j) = 1
  forall(j in N)
    pcon(j):= sum(i in N) x(i,j) = 1

  zero:= x(1,1)+x(1,3)+x(1,5)+x(1,7)+x(1,9) = 0

  dista:=sum(i in N) 10*(i-1)*x(i,1)+sum(i in N)(i-1)*x(i,2)+d =
         sum(i in N) 10*(i-1)*x(i,3)+sum(i in N)(i-1)*x(i,4)

  distb:=sum(i in N) 10*(i-1)*x(i,3)+sum(i in N)(i-1)*x(i,4)+d =
         sum(i in N) 10*(i-1)*x(i,5)+sum(i in N)(i-1)*x(i,6)

  distc:=sum(i in N) 10*(i-1)*x(i,5)+sum(i in N)(i-1)*x(i,6)+d =
         sum(i in N) 10*(i-1)*x(i,7)+sum(i in N)(i-1)*x(i,8)

  distd:=sum(i in N) 10*(i-1)*x(i,7)+sum(i in N)(i-1)*x(i,8)+d =
         sum(i in N) 10*(i-1)*x(i,9)+sum(i in N)(i-1)*x(i,10)

  forall(i in N,j in N)
    x(i,j) is_binary

  minimise(closest)
  
  forall(i in N) do
    forall(j in N)
      write(getsol(x(i,j)),' ')
    writeln
  end-do

end-model