Bir fonksiyon olduğu söylenir uzunluğunun döngüsü, n bir mevcutsa x kendi etki bu şekilde ön , n (x) = ve f m (x) ≠ x için 0 <m <n , üst simge n O anlamına gelir , n - katlama uygulaması f . 1 uzunluk döngüsünün sabit bir f (x) = x noktası olduğuna dikkat edin .
Göreviniz bir uygulamaktır bijective işlevi her olumlu uzunluğu tam olarak bir döngüsü vardır kendilerine tamsayılar gelen, n . İki yönlü bir işlev, bire bir yazışmadır, yani her tamsayı bir kez eşleştirilir. Uzunluğunun tam bir devir olması , n tam olarak var olduğu anlamına gelir n, farklı sayılar x olan f , n (x) = ve f m (x) ≠ x için 0 <m <n .
İşte böyle bir işlevin x = 0 etrafında nasıl görünebileceğine bir örnek :
x ... -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 ...
f(x) ... 2 4 6 -3 -1 1 -4 0 -2 5 7 -7 -6 3 -5 ...
Bu alıntı 1 ila 5 arasındaki uzunluk döngülerini içerir :
n cycle
1 0
2 -2 1
3 -4 -3 -1
4 -5 6 3 7
5 -7 2 5 -6 4
...
Yukarıda "işlev" i sadece matematiksel anlamda kullandığımı unutmayın. Giriş olarak tek (imzalı) bir tamsayı alır ve tek (imzalı) bir tamsayı döndürdüğü sürece, kendi dilinizde bir işlev veya tam bir program yazabilirsiniz. Her zaman olduğu gibi STDIN, komut satırı bağımsız değişkeni, işlev bağımsız değişkeni vb. Yoluyla giriş alabilir ve STDOUT, işlev dönüş değeri veya işlev (çıkış) bağımsız değişkeni vb. Aracılığıyla çıktı alabilirsiniz.
Tabii ki, birçok dil keyfi hassas tamsayıları (kolayca) desteklemez. Uygulamanız yalnızca en azından [-127, 127] aralığını kapsadığı ve dilin tamsayı türünün isteğe bağlı olarak değiştirilmesi durumunda rasgele tamsayılar için çalışacağı sürece, dilinizin yerel tamsayı türü aralığında çalışıyorsa iyi olur. hassas tamsayılar.
Standart kod golf kuralları geçerlidir.