单峰排列

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      

 

以上是关于单峰排列的主要内容,如果未能解决你的问题,请参考以下文章

2021.8.10提高B组模拟2T1 单峰(快速幂)

2021.8.10提高B组模拟2T1 单峰(快速幂)

作业2.有重复全排列和无重复全排列的区别

LeetCode下一个排列与全排列问题

排列oj

枚举排列