Guru Precalc saya memiliki salah satu masalah favoritnya yang ia ciptakan (atau lebih mungkin mencuri terinspirasi oleh xkcd ) yang melibatkan sederetan n
urinal. "Skakmat" adalah situasi di mana setiap urinoir sudah terisi ATAU memiliki urin yang terisi di sebelahnya. Misalnya, jika seseorang adalah seorang X
, maka
X-X--X
dianggap sekakmat. Perhatikan bahwa seseorang tidak dapat menempati urinoir di sebelah urinoir yang sudah diduduki.
Tugas
Program Anda akan mengambil nomor melalui stdin
, argumen baris perintah, atau argumen fungsi. Program Anda kemudian akan mencetak atau mengembalikan jumlah cara skakmat dapat terjadi dengan jumlah urinal yang dimasukkan.
Contohnya
0 -> 1
(penghitungan kasus null sebagai skakmat)
1 -> 1
( X
)
2 -> 2
( X-
atau -X
)
3 -> 2
( X-X
atau -X-
)
4 -> 3
( X-X-
, -X-X
, atau X--X
)
5 -> 4
( X-X-X
, X--X-
, -X-X-
, atau -X--X
)
6 -> 5
( X-X-X-
, X--X-X
, X-X--X
, -X--X-
atau -X-X-X
)
7 -> 7
( X-X-X-X
, X--X-X-
, -X-X--X
, -X--X-X
, X-X--X-
, X--X--X
atau -X-X-X-
)
8 -> 9
( -X--X--X
, -X--X-X-
, -X-X--X-
, -X-X-X-X
, X--X--X-
, X--X-X-X
, X-X--X-X
, X-X-X--X
, X-X-X-X-
)
...
Mencetak gol
Program terkecil dalam byte menang.
''
. Ini sama dengan faktorial dan permutasi, 0! = 1, karena ada tepat 1 cara untuk mengatur 0 item.