【问题描述】
一个 1~n 的全排列 A[i] 是单峰的,当且仅当存在某个x使得:
A[1] < A[2] < ... < A[x] > A[x+1] > ... > A[n]
例如,对于9的全排列,125798643是单峰排列,123456789也是单峰排列,但356298741就不是。
试求n的单峰全排列的个数。
【输入格式】
输入一个数n。
【输出格式】
输出n的全排列中单峰排列的个数。由于这个数可能很大,因此你只需要输出它mod 1234567的值。
【输入样例】
3
【输出样例】
4
【样例解释】
共有以下4种方案:123、132、231、321
【数据范围】
n<=2 000 000 000
一个 1~n 的全排列 A[i] 是单峰的,当且仅当存在某个x使得:
A[1] < A[2] < ... < A[x] > A[x+1] > ... > A[n]
例如,对于9的全排列,125798643是单峰排列,123456789也是单峰排列,但356298741就不是。
试求n的单峰全排列的个数。
【输入格式】
输入一个数n。
【输出格式】
输出n的全排列中单峰排列的个数。由于这个数可能很大,因此你只需要输出它mod 1234567的值。
【输入样例】
3
【输出样例】
4
【样例解释】
共有以下4种方案:123、132、231、321
【数据范围】
n<=2 000 000 000
解题思路:根据题意,求方案数问题,首选当然是递推算法。第一步,设状态函数,设f(i)表示1~i的单峰全排列个数。第二步,分析递推方程,因为f(i)只比f(i-1)多了一个最大的数i