单峰排列
Posted alan-anders
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单峰排列相关的知识,希望对你有一定的参考价值。
【题目描述】
一 个 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的全排列中单峰排列的个数为2n-2个,所以用快速幂就可以解决
代码如下
1 #include <iostream> 2 using namespace std; 3 int N=1234567; 4 long long qsort (long long a,long long b) 5 6 long long base=a,ans=1; 7 while (b!=0) 8 9 if (b&1!=0) 10 11 ans*=base; 12 ans%=N; 13 14 base*=base; 15 base%=N; 16 b>>=1; 17 18 return ans%N; 19 20 int main() 21 22 long long n; 23 cin>>n; 24 n-=1; 25 cout<<qsort(2,n); 26
以上是关于单峰排列的主要内容,如果未能解决你的问题,请参考以下文章