码迷,mamicode.com
首页 > 其他好文 > 详细

单峰排列

时间:2019-06-20 21:17:43      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:说明   while   clu   ase   include   out   需要   快速幂   思路   

【题目描述】

一 个 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  }    

 

单峰排列

标签:说明   while   clu   ase   include   out   需要   快速幂   思路   

原文地址:https://www.cnblogs.com/Alan-Anders/p/11061342.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!