>>536
とりあえず
>n=2kのとき a[n]=k^2 - 2[(2k-1)/5]。
だとa[10] = 23になるけどn=10で21回の解があった。

import Data.Ratio
import Data.List

exchange (i, j) x = let
(a,b) = (min i j,max i j)
in
(take (a-1) x) ++ [x!!(b-1)] ++ (drop a $ take (b-1) x) ++ [x!!(a-1)] ++ (drop b x)

apply exs ns = foldr exchange ns exs

exs3 = [(5,7),(3,5),(5,6),(6,8),(4,6),(6,7),(7,9),(5,7),(2,3),(3,5),(5,7),(7,9),(1,3),(3,4),(4,6),(6,8),(8,10),(6,8),(4,6),(2,4),(1,2)] :: [(Int,Int)]

main = do
print $ apply exs3 [1..10]
print $ length exs3
―実行結果―
[10,9,8,7,6,5,4,3,2,1]
21