我的Precalc老师遇到了他最喜欢的问题之一,他解决了(或更可能是受xkcd启发而偷走了)涉及小便池的问题。“将死”的情况是,每个小便池已经被占用,或者在其旁边有一个小便池被占用。例如,如果某人是,则n
X
X-X--X
被认为是将死。注意,一个人不能在一个已经被占用的小便池旁边占用一个小便池。
任务
您的程序将通过stdin
,命令行参数或函数参数获取一个数字。然后,您的程序将打印出或返回与输入的小便池数量对应的将发生伴侣的方式。
例子
0 -> 1
(空的情况下计为将死)
1 -> 1
(X
)
2 -> 2
(X-
或-X
)
3 -> 2
(X-X
或-X-
)
4 -> 3
(X-X-
,-X-X
,或X--X
)
5 -> 4
(X-X-X
,X--X-
,-X-X-
,或-X--X
)
6 -> 5
(X-X-X-
,X--X-X
,X-X--X
,-X--X-
或-X-X-X
)
7 -> 7
(X-X-X-X
,X--X-X-
,-X-X--X
,-X--X-X
,X-X--X-
,X--X--X
或-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-
)
...
计分
以字节为单位的最小程序获胜。
''
。这与阶乘和置换相同,为0!= 1,因为恰好有1种方式可以排列0个项目。